Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

En SQL, comment puis-je diviser les valeurs d'un total de masque de bits en une chaîne délimitée par des virgules

Cela devrait fonctionner :

SELECT id, name, bitMaskValue,
    SUBSTRING(
            CASE WHEN bitMaskValue & 1 = 1 THEN ',1' ELSE '' END
          + CASE WHEN bitMaskValue & 2 = 2 THEN ',2' ELSE '' END
          + CASE WHEN bitMaskValue & 4 = 4 THEN ',4' ELSE '' END
          + CASE WHEN bitMaskValue & 8 = 8 THEN ',8' ELSE '' END
        , 2, 64) As [values]
FROM yourTable