Ali*_*xel 5 sql sqlite bit-manipulation bitmask bitwise-operators
我有一个表存储访问权限作为按位掩码:
0 没有1 用户2 超级用户我想查询,例如,所有具有user+ super-user特权的帐户,我认为:
SELECT * FROM "accounts" WHERE "privileges" & 3;
Run Code Online (Sandbox Code Playgroud)
会工作,但它也返回所有普通的user(1)帐户.我可以看到这是正确的,因为:
1 (01)
& 3 (11)
-----------
= 1 (01)
Run Code Online (Sandbox Code Playgroud)
我记得这在MySQL中很容易实现,但我忘记了在此期间.
我认为解决方案可能很简单,任何人都可以给我一个暗示吗?
Mic*_*Liu 17
检查结果"privileges" & 3是否实际等于3:
SELECT * FROM "accounts" WHERE ("privileges" & 3) == 3;
Run Code Online (Sandbox Code Playgroud)
否则,查询将选择至少设置一位的记录.