我有一个不同的位掩码字段,我想对其执行按位与。
PG::Error: ERROR: cannot AND bit strings of different sizes
SELECT "groups".* FROM "groups" WHERE (read_roles_bitmask = B'0' OR read_roles_bitmask & B'10' > B'0')
(你需要在你的表中有不同长度的位掩码才能得到这个错误。)
我希望按位数学如下所示:00010 & 100000010 = 00010
我还尝试将位掩码转换为整数,但没有成功。
为什么 PostgreSQL 对此感到窒息?
我应该如何重写这个查询才能很好地发挥作用?
我能够使用以下方法使按位运算符工作: lpad(read_roles_bitmask::varchar,64,'0')::bigint
但是这仅限于64位,有更好的方法吗?