如何在MySQL的多个记录的字段中添加位值

时间:2013-02-23 23:17:54

标签: mysql binary bit

拥有一个数据库,其中一个表具有使用二进制位作为标志的字段。因此,根据切换的标志,您可以拥有多种值,因此单独查看值是没有用的。即,大于8的值并不意味着8的值正在使用中(例如17为16 + 1)。

考虑到这一点,有没有办法更新多个记录,为特定字段设置或取消设置一个位(比如值8)?有些记录可能设置了,有些则没有,所以不要只是简单地添加(或减去)8。

2 个答案:

答案 0 :(得分:3)

您可以使用按位OR |和AND &函数;

UPDATE myTable SET myValue = value |  8;   -- set bit 3
UPDATE myTable SET myValue = value & ~8;   -- clear bit 3

(Very) simple SQLfiddle for testing

答案 1 :(得分:2)

使用BIT functions。设置第1位:

update your_table
set bit_field = bit_field | b'0001'

取消设置第1位:

update your_table
set bit_field = bit_field & b'1110'

SQLFiddle demo