MySQL,一列多个BIT运算
MySQL, multiple BIT operations in one column
我有一个名为 settings
的列(类型:tinyint unsigned not null)。
包含用户设置位 (0/1)。
例如,当我想要更新 setting_1 时,我会这样做:
UPDATE `users` SET `settings`=`settings`|1
(将设置 1 设置为 1(真))。
但是,我如何对一列进行多次更新?
例如:
UPDATE `users`
SET
`settings`=`settings`|1,
`settings`=`settings`&~2,
`settings`=`settings`|4
WHERE `user`='xyz';
有解释它的链接吗?
您可以一起执行所有操作,例如
update user
set settings = settings|1&~2|4;
您也可以使用括号来限制范围。这是相同的 SQL Fiddle。
我有一个名为 settings
的列(类型:tinyint unsigned not null)。
包含用户设置位 (0/1)。
例如,当我想要更新 setting_1 时,我会这样做:
UPDATE `users` SET `settings`=`settings`|1
(将设置 1 设置为 1(真))。
但是,我如何对一列进行多次更新? 例如:
UPDATE `users`
SET
`settings`=`settings`|1,
`settings`=`settings`&~2,
`settings`=`settings`|4
WHERE `user`='xyz';
有解释它的链接吗?
您可以一起执行所有操作,例如
update user
set settings = settings|1&~2|4;
您也可以使用括号来限制范围。这是相同的 SQL Fiddle。