我有一个 mysql 列,其中包含一个整数,其中包含有关用户选择的选项的信息。
现在,例如,数字 42 = 2 + 8 + 32 = 2^ 1 + 2^ 3 + 2^ 5,因此选项 = 42 的用户选择了选项 1,3 和 5。
如何选择(至少)选择了选项 5 的所有用户?什么是正确的工作 sql 查询?
SELECT * FROM `users` WHERE ???(`options`) = ???(5);
提前致谢!
IFoptions
是整数类型,您可以选择在其选项中设置了至少第 5 位的行,如下所示:
SELECT * FROM `users` WHERE `options` >= POW(2, 5)
要仅选择选项中设置了第 5 位的列,请执行
SELECT * FROM `users` WHERE (`options` & POW(2, 5))
尝试按位运算:
http://dev.mysql.com/doc/refman/5.0/en/bit-functions.html
在您的代码(MySql)中,条件可能是
SELECT *
FROM `users`
WHERE (`options` & (1 << 5)) <> 0