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


#Установить флаг 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
Шпаргалка по битовым операциям:
0x1|0x2 = 0x3 // сложение
0x3&0x2 = 0x2 
0x1&0x2 = 0x0 
0x3&~0x2 = 0x1