1

我有一个 mysql 列,其中包含一个整数,其中包含有关用户选择的选项的信息。

现在,例如,数字 42 = 2 + 8 + 32 = 2^ 1 + 2^ 3 + 2^ 5,因此选项 = 42 的用户选择了选项 1,3 和 5。

如何选择(至少)选择了选项 5 的所有用户?什么是正确的工作 sql 查询?

SELECT * FROM `users` WHERE ???(`options`) = ???(5);

提前致谢!

4

2 回答 2

0

IFoptions是整数类型,您可以选择在其选项中设置了至少第 5 位的行,如下所示:

SELECT * FROM `users` WHERE `options` >= POW(2, 5)

选择选项中设置了第 5 位的列,请执行

SELECT * FROM `users` WHERE (`options` & POW(2, 5))
于 2013-06-16T14:40:42.753 回答
0

尝试按位运算:

http://dev.mysql.com/doc/refman/5.0/en/bit-functions.html

在您的代码(MySql)中,条件可能是

SELECT * 
  FROM `users` 
 WHERE (`options` & (1 << 5)) <> 0 
于 2013-06-16T14:43:07.403 回答