SQL按位屏蔽
我有一个将访问权限存储为位掩码的表:SQL按位屏蔽,sql,sqlite,bit-manipulation,bitwise-operators,bitmask,Sql,Sqlite,Bit Manipulation,Bitwise Operators,Bitmask,我有一个将访问权限存储为位掩码的表: 0none 1用户 2超级用户 例如,我想查询所有拥有用户+超级用户特权的帐户,我认为: SELECT * FROM "accounts" WHERE "privileges" & 3; 可以,但它也会返回所有正常用户(1)帐户。我可以看出这是正确的,因为: 1 (01) & 3 (11) ----------- = 1 (01) 我记得这在MySQL中是很容易做到的,但是我忘了这是怎么做到的 我认为解决方案可能
none0
用户1
超级用户2
用户
+超级用户
特权的帐户,我认为:
SELECT * FROM "accounts" WHERE "privileges" & 3;
可以,但它也会返回所有正常用户(1
)帐户。我可以看出这是正确的,因为:
1 (01)
& 3 (11)
-----------
= 1 (01)
我记得这在MySQL中是很容易做到的,但是我忘了这是怎么做到的
我认为解决方案可能很简单,有人能给我一个提示吗?检查
“特权”&3
的结果是否实际上等于3:
SELECT * FROM "accounts" WHERE ("privileges" & 3) == 3;
否则,查询将选择至少设置了一位的记录。我认为您需要测试
“privileges”&3
的结果是否实际等于3。@MichaelLiu:啊,是的!傻,傻我。。。就是这样(虽然它不适用于0
),谢谢您的帮助,请随时将您的评论作为答案发布,以便我可以接受。