Order by query optimization for multi select data (enum)
Below is an example of how you can return the ordered list using your new structure.  What is missing from the database design is an ID table with one row per ID.  This would then provide a one-to-many relationship in 3NF, and avoid the need to select the distinct ID values from the many side.  You could use that parent table instead of the derived table in this example, which would be more efficient.

CREATE TABLE dbo.Alphabets(
    ID int NOT NULL
    ,Alphabets char(1) NOT NULL
    ,CONSTRAINT PK_Alphabets PRIMARY KEY (ID, Alphabets)
    );

INSERT INTO dbo.Alphabets VALUES
     (1, 'A')
    ,(1, 'B')
    ,(1, 'C')
    ,(2, 'B')
    ,(2, 'D')
    ,(3, 'A')
    ,(3, 'C')
    ,(3, 'D')
    ,(4, 'A')
    ,(4, 'C')
    ,(5, 'A')
    ,(5, 'B')
    ,(5, 'D');

SELECT  ID
        , ( SELECT    '|' + Alphabets
            FROM      dbo.Alphabets AS b
            WHERE     b.ID = a.ID
            ORDER BY  b.Alphabets
        FOR
            XML PATH('')
        ) + '|' AS Alphabets
FROM    ( SELECT DISTINCT
                    ID
            FROM      dbo.Alphabets
        ) AS a
ORDER BY Alphabets DESC;