有一個數據庫,其中一個表的字段使用二進制位作爲標誌。因此,根據哪些標誌被切換,您可以擁有各種各樣的值,因此單獨查看這些值無濟於事。即大於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