Битовые операции в MySQL (Работа с флагами)

Ответить
Аватара пользователя
Distructor
Администратор
Сообщения: 1607
Зарегистрирован: 28.12.2009

Код: Выделить всё

#Установить флаг  0x2:
UPDATE `table` SET `flag`=`flag` | (0x2);

#Установить сразу несколько битов (0x1 и 0x2):
UPDATE `table` SET `flag`=`flag` | (0x1|0x2);

#Удалить флаг 0x2:
UPDATE `table` SET `flag`=`flag` &~ (0x2);

#Удалить сразу несколько битов (0x1 и 0x2):
UPDATE `table` SET `flag`=`flag` &~ (0x1|0x2);

#Проверка наличия флага 0x2:
SELECT * FORM `table` WHERE (`flag` & 0x2) != 0

#Тоже самое для проверка наличия хотя бы одного бита маски 0x3. То есть если установлены биты 0x1 или 0x2.
SELECT * FORM `table` WHERE (`flag` & 0x3) != 0

#Проверка наличия всех битов маски 0x3. То есть если установлены биты 0x1 и 0x2 одновременно.
SELECT * FORM `table` WHERE (`flag` & 0x3) = 0x3
Источник


| - побитовое или
& - побитовое и

подробнее в вики

Ответить