我有一个表将访问权限存储为按位掩码:
0
无1
用户2
超级用户我想查询具有user
+ super-user
权限的所有帐户,我认为:
SELECT * FROM "accounts" WHERE "privileges" & 3;
可行,但它也会返回所有普通用户(1
)帐户。我可以看到这是正确的,因为:
1 (01)
& 3 (11)
-----------
= 1 (01)
我记得在MySQL中这很容易实现,但我忘了在此期间。
我认为解决方案可能很简单,任何人都可以给我一个暗示吗?
答案 0 :(得分:16)
检查"privileges" & 3
的结果是否实际等于3:
SELECT * FROM "accounts" WHERE ("privileges" & 3) == 3;
否则,查询将选择至少设置一个位的记录。