我在这里找到了一个非常好的资源(比较SQL中的两个位掩码以查看是否匹配任何位),用于在SQL数据库中进行搜索,其中使用位掩码存储具有多个属性的数据。然而,在此示例中,所有数据都存储为整数,并且where子句似乎仅适用于整数。
是否有一种简单的方法将非常相似的测试用例转换为完整的位字符串?因此,例如:
是否有一种简单的方法将非常相似的测试用例转换为完整的位字符串?因此,例如:
with test (id, username, roles)
AS
(
SELECT 1,'Dave',1
UNION SELECT 2,'Charlie',3
UNION SELECT 3,'Susan',5
UNION SELECT 4,'Nick',2
)
select * from test where (roles & 7) != 0
而不是像这样:
with test (id, username, roles)
AS
(
SELECT 1,'Dave',B'001'
UNION SELECT 2,'Charlie',B'011'
UNION SELECT 3,'Susan',B'101'
UNION SELECT 4,'Nick',B'110'
)
select * from test where (roles & B'001') != 0
我可以进行转换,但用实际位串更容易可视化。对于我的简单转换(如上),我得到一个错误,即运算符不能用于位串。是否有另一种设置方式可以使其正常工作?