拥有一个数据库,其中一个表具有使用二进制位作为标志的字段。因此,根据切换的标志,您可以拥有多种值,因此单独查看值是没有用的。即,大于8的值并不意味着8的值正在使用中(例如17为16 + 1)。
考虑到这一点,有没有办法更新多个记录,为特定字段设置或取消设置一个位(比如值8)?有些记录可能设置了,有些则没有,所以不要只是简单地添加(或减去)8。
答案 0 :(得分:3)
您可以使用按位OR |
和AND &
函数;
UPDATE myTable SET myValue = value | 8; -- set bit 3
UPDATE myTable SET myValue = value & ~8; -- clear bit 3
答案 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'