SQL - 整数类型 - 检测位

RoR*_*RoR 12 mysql sql bitwise-operators

使用SQL,我想检测某个位是否使用整数列类型(MySQL)?

我该怎么做?

基本上,我想检测一个位是否打开,如果它打开,然后忽略.

我现在正在使用这样的东西:

WHERE (column & 2) != 2
Run Code Online (Sandbox Code Playgroud)

PyK*_*ing 14

假设您正在检查第3位然后......

SELECT bits & 8 = 8 FROM table;
Run Code Online (Sandbox Code Playgroud)

这将返回二进制(1或0),表示相关位(在这种情况下是第三个)是否为列'位'中的每一行打开或关闭.

使用2 ^ x代替第x位而不是8位.

例如,要检查第5位,我们将使用2 ^ 5 = 32

SELECT bits & 32 = 32 FROM table;
Run Code Online (Sandbox Code Playgroud)

然而,这是不必要的复杂.只需在几列中使用布尔值,它就会使事情变得更容易.


Bra*_*adC 7

使用&,按位AND运算符:

SELECT ID, myfield
FROM mytable
WHERE (myfield & 16) > 0  
Run Code Online (Sandbox Code Playgroud)