Jac*_*ero 3 mysql bit-manipulation where-clause
我有一个以二进制形式保存用户首选项的数据库。
Chips = 1;
Pizza = 2;
Chinese = 4;
Run Code Online (Sandbox Code Playgroud)
例如,如果用户喜欢薯条,那么他们的偏好将为1。如果他们喜欢披萨,他们的偏好将为2。如果两者都喜欢,他们的偏好将为3。如果他们喜欢中餐和薯条,但不喜欢披萨,那么他们的偏好是 5。
我需要创建一个 mysql 查询,在其中我可以选择所有不喜欢 Pizza 的用户。我试图解决这个问题,但我发现缺乏使用 bit 和在 where 子句中的文档:
从逻辑上讲,这对我来说是有道理的,但这是不对的:
SELECT * FROM `User` WHERE BIT_AND(preferences,2) != 2;
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM `User`
WHERE preferences & 2 = 0
Run Code Online (Sandbox Code Playgroud)