INT в двоичные и затем считанные биты

У меня есть значение INT в моей базе данных, которое фактически хранит выбранные дни недели.

Например, 65 = 1000001

Это означало бы:

 1:Sun 0:Mon 0:Tue 0:Wed 0:Thu 0:Fri 1:Sat 

Итак, мне нужно приземлиться с небольшим временным столом с:

 DayOfWeek: Sunday Saturday 

Итак, прочитайте INT и выведите таблицу дней.

Это можно сделать в SQL Server?

 ; with tbl as ( select col = 65 union all select col = 3 ) select * from tbl t cross apply ( select DayOfWeek = 'Sun' where col & 64 = 64 union all select DayOfWeek = 'Mon' where col & 32 = 32 union all select DayOfWeek = 'Tue' where col & 16 = 16 union all select DayOfWeek = 'Wed' where col & 8 = 8 union all select DayOfWeek = 'Thu' where col & 4 = 4 union all select DayOfWeek = 'Fri' where col & 2 = 2 union all select DayOfWeek = 'Sat' where col & 1 = 1 ) d 

Не расшифровывайте в SQL, это будет боль после их использования. Если у вас есть сохраненный номер, вы просто присоединяетесь к таблице, например:

 Code Pattern 64 Sun 96 Sun-Mon 

Или вы можете сделать это, если хотите по строке

 Code Pattern 64 Sun 96 Sun 96 Mon 

Это еще лучше.

В противном случае у вас будут проблемы с производительностью.

в БД и SQL, соединение всегда лучше декодирования, если вам нужно подоконник.

создать таблицу типа

значение colname

Солнце | 1

Пн | 2

Tue | 4

Ср | 8

Thu | 16

Пт | 32

Сб | 64

Присоедините данные к таблице и суммируйте значение …

Давайте будем гением компьютера.