有一个数据库,其中一个表的字段使用二进制位作为标志。因此,根据哪些标志被切换,您可以拥有各种各样的值,因此单独查看这些值无济于事。即大于8的值并不意味着8的值正在使用(例如17是16 + 1)。如何在MySQL的多个记录的字段中添加一个位值
考虑到这一点,是否有更新多个记录的方法来设置或取消设置特定字段的位(例如值为8)?有些记录可能会设置它,另一些则不会,所以不要只是简单地添加(或减去)8。
有一个数据库,其中一个表的字段使用二进制位作为标志。因此,根据哪些标志被切换,您可以拥有各种各样的值,因此单独查看这些值无济于事。即大于8的值并不意味着8的值正在使用(例如17是16 + 1)。如何在MySQL的多个记录的字段中添加一个位值
考虑到这一点,是否有更新多个记录的方法来设置或取消设置特定字段的位(例如值为8)?有些记录可能会设置它,另一些则不会,所以不要只是简单地添加(或减去)8。
使用BIT functions。要设置位1:
update your_table
set bit_field = bit_field | b'0001'
取消设置位1:
update your_table
set bit_field = bit_field & b'1110'
可以使用位或|
和AND &
功能;
UPDATE myTable SET myValue = value | 8; -- set bit 3
UPDATE myTable SET myValue = value & ~8; -- clear bit 3
所以|添加位和&只保留匹配位(设置为1)? – Wolfie 2013-02-23 23:28:30
@Wolfie正确。 – 2013-02-23 23:32:44
看着你提供的链接,如果不喜欢,将会是一个更好的选择? *将您的问题标记为自您首先回答以来的答案。谢谢。 – Wolfie 2013-02-23 23:35:17