有一个数据库,其中一个表有一个使用二进制位作为标志的字段。因此,根据切换的标志,您可以拥有广泛的值,因此仅查看值是没有帮助的。即,大于 8 的值并不意味着正在使用 8 的值(例如 17 是 16 + 1)。
考虑到这一点,有没有办法更新多个记录以设置或取消设置特定字段的位(例如值 8)?有些记录可能设置了它,而其他记录则没有,所以不要只是简单地添加(或减去)8。
您可以使用按位 OR|
和 AND&
函数;
UPDATE myTable SET myValue = value | 8; -- set bit 3
UPDATE myTable SET myValue = value & ~8; -- clear bit 3
使用BIT 功能。设置位 1:
update your_table
set bit_field = bit_field | b'0001'
要取消设置位 1:
update your_table
set bit_field = bit_field & b'1110'