Проверка SQL для битового флага - PullRequest
0 голосов
/ 04 июня 2018

Таким образом, у приложения есть флажки, которые помечены битами.В зависимости от того, какой флажок выбран, приложение сохранит его как целое число в базе данных.Как я могу запросить int в базе данных, чтобы проверить, включен ли определенный бит.

Пример:

Decimal   Binary
16        00010000
208       11010000

Я хочу проверить, включен ли 5-й бит (или любой в этом отношении).

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вы можете определить оператор сдвига битов в SQL, умножив или разделив на 2

Примеры хранимых процедур для этого можно найти здесь: http://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/

0 голосов
/ 04 июня 2018

SQL Server не имеет оператора сдвига битов, но что-то вроде этого работает:

where decimal & (2^(5-1)) > 0

Конечно, использование битовых карт напрашивается из вопроса: почему вы просто не используете наборбитовые флаги?Вы можете определить каждый из них по отдельности, и код будет намного легче читать.

...