2016-03-11 2 views
0

У меня есть столбец с именем settings (type: tinyint unsigned not null).MySQL, несколько операций BIT в одном столбце

Это содержит пользовательские настройки в битах (0/1).

Например, когда я хочу обновить setting_1 тогда я сделать:

UPDATE `users` SET `settings`=`settings`|1 

(Это устанавливает SETTING1 1 (истина)).

Но, как я могу сделать несколько обновлений одной колонки? Например:

UPDATE `users` 
SET 
`settings`=`settings`|1, 
`settings`=`settings`&~2, 
`settings`=`settings`|4 
WHERE `user`='xyz'; 

Любые ссылки, которые объясняют это?

ответ

2

Вы можете выполнять все операции вместе, например.

update user 
set settings = settings|1&~2|4; 

Вы также можете использовать скобки для ограничения объема. Вот для этого SQL Fiddle.

+0

У меня есть другой вопрос. Порядок операций имеет значение? Например: & ~ 1 | 2 & ~ 4 vs & ~ 1 & ~ 4 | 2 Я тестировал то же самое на PHP, и для этой операции у меня были разные результаты. https://eval.in/622933 – KsaR