Похоже на двоичный дизайн. Вам нужно использовать побитовый оператор &, чтобы получить желаемый результат.
Decimal = Binary
109 = 1101101
001 = 0000001
------&------
0000001 = 1
109 = 1101101
002 = 0000010
------&------
0000000 = 0
109 = 1101101
004 = 0000100
------&------
0000100 = 4
В SQL Server встроено битовых операторов . Вы можете использовать побитовые и для этого, как:
DECLARE @InputNum INT = 109
SELECT ISNULL(STUFF(CASE WHEN @InputNum & 1 > 0 THEN ', SUN' ELSE '' END +
CASE WHEN @InputNum & 2 > 0 THEN ', MON' ELSE '' END +
CASE WHEN @InputNum & 4 > 0 THEN ', TUE' ELSE '' END +
CASE WHEN @InputNum & 8 > 0 THEN ', WED' ELSE '' END +
CASE WHEN @InputNum & 16 > 0 THEN ', THU' ELSE '' END +
CASE WHEN @InputNum & 32 > 0 THEN ', FRI' ELSE '' END +
CASE WHEN @InputNum & 64 > 0 THEN ', SAT' ELSE '' END,1,2,''),'')
проверьте документацию MS для более подробного объяснения побитовых операторов.