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
Присоедините данные к таблице и суммируйте значение …