Тип SQL - Integer - бит обнаружения

С SQL я хотел бы определить, включен ли определенный бит с целым типом столбца (MySQL)?

Как я могу это сделать?

В принципе, я хочу определить, включен ли бит, если он включен, а затем игнорировать.

Теперь я использую что-то вроде этого:

WHERE (column & 2) != 2

Ответ 1

Скажем, вы проверяете третий бит, затем...

SELECT bits & 8 = 8 FROM table;

Возвращает двоичный код (1 или 0) для того, включен ли бит (в данном случае третий) для каждой строки в битах столбца.

используя 2 ^ x для x-го бита вместо 8.

например, чтобы проверить 5-й бит, мы будем использовать 2 ^ 5 = 32

SELECT bits & 32 = 32 FROM table;

Однако это излишне сложно. Просто используйте логические значения в нескольких столбцах, и это упростит ситуацию.

Ответ 3

SQL поддерживает стандартные операторы бит:

DECLARE @BitMask INT
SET @BitMask = 34

SELECT 
    @BitMask & 32, -- Returns 32, ON 
    @BitMask & 16  -- Returns 0, OFF

Ответ 4

Для mysql вы можете использовать бит-мудрый оператор AND & с битовой маской

Например, чтобы получить boolean true, если бит 2 (считая от 0) установлен для столбца1, используйте это:

where (column1 & 4) = 4

это будет работать для проверки нескольких бит, например, чтобы проверить, что оба бита 0 и 2 установлены:

where (column1 & 5) = 5

Ответ 5

Вы должны пометить вопрос для платформы базы данных, которую используете.

Если это SQL Server 2008, вы можете использовать побитовые операторы (в частности, поразрядные или равные) для сравнения с целым числом, чьи биты заданы шаблоном, который вы заинтересованы в тестировании для: http://msdn.microsoft.com/en-us/library/cc627409.aspx

Обратите внимание, что путем упаковки целых чисел таким образом вы, вероятно, предотвратите использование любых индексов в этих столбцах.

Ответ 7

В TSQL, 1 = true, 0 = false.
В MS Access, -1 = true, 0 = false.
...
Возможно, кто-то может заполнить другие диалекты.

Если вы интерпретируете бит на прикладном уровне, вы должны иметь возможность использовать функцию преобразования (например, в vb вы можете сказать IF convert.toboolean(myValue) THEN... интерпретировать истину или ложь.