Тип 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;
Однако это излишне сложно. Просто используйте логические значения в нескольких столбцах, и это упростит ситуацию.
Ответ 2
Используйте &
, побитовый оператор AND:
SELECT ID, myfield
FROM mytable
WHERE (myfield & 16) > 0
Ответ 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
Обратите внимание, что путем упаковки целых чисел таким образом вы, вероятно, предотвратите использование любых индексов в этих столбцах.
Ответ 6
Я верю, что это поможет вам достичь того, чего вы хотите:
SQL-манипуляция с битами
Ответ 7
В TSQL, 1 = true, 0 = false.
В MS Access, -1 = true, 0 = false.
...
Возможно, кто-то может заполнить другие диалекты.
Если вы интерпретируете бит на прикладном уровне, вы должны иметь возможность использовать функцию преобразования (например, в vb вы можете сказать IF convert.toboolean(myValue) THEN...
интерпретировать истину или ложь.