对于where子句,我需要运算符和(&)。如果int字段中的所有位都打开,它会添加到结果集。 & -operator并不总能回答正确答案。
实施例: 1。 Conts = 132.(128 + 4) 数据库字段160.(128 + 32) Mysql&运算符返回true。但是如果只设置128位和4位,我需要它返回true(例如196(128 + 64 + 4)。
Conts = 128 数据库字段160. Mysql& -operator返回true,并且确定。
Conts = 220(4 + 8 + 16 + 64 + 128)。 数据库字段= 40(32 + 8)。 Mysql& -operator返回true。这没关系,因为在220只提供了8位。
答案 0 :(得分:3)
如果您使用conts & field
,则conts
中的 field
中的任何位都会成立。要确定 all 中conts
中的位是否已在数据库字段中打开,请使用:
conts & field = conts
示例:
+-----------------+
| 132 & 160 = 132 |
+-----------------+
| 0 |
+-----------------+
+-----------------+
| 132 & 196 = 132 |
+-----------------+
| 1 |
+-----------------+
+-----------------+
| 128 & 160 = 128 |
+-----------------+
| 1 |
+-----------------+
+----------------+
| 220 & 40 = 220 |
+----------------+
| 0 |
+----------------+