MySQL,一列中有多个BIT操作

时间:2016-03-11 00:04:04

标签: mysql bit-manipulation bit

我的列名为settings(类型:tinyint unsigned not null)。

包含位(0/1)的用户设置。

例如,当我想要更新setting_1时,我会这样做:

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

(将setting1设置为1(true))。

但是,我怎么能多次更新一列呢? 例如:

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

任何解释它的链接?

1 个答案:

答案 0 :(得分:2)

您可以一起执行所有操作,例如

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

您还可以使用括号来限制范围。这是同一个SQL Fiddle