1

我尝试找出使用BITAND.

在数据库中,我将用户权限保存为 BIGINT11011111110001.

在示例情况下,如果设置了第三位,我必须找出表中的元素。在这种情况下。查询应该找到第一个。

我怎样才能做到这一点??

Select * from USERRIGHTS
WHERE BITAND(Rightmask , 4) = 1 ??????
4

2 回答 2

1

我找到了解决方案。以“1101111”的形式保存正确的掩码是愚蠢的。我应该以十进制格式保存数据。在这种情况下,1101111 = 111(十进制)或 1110001 = 113。我在我的应用程序中将正确的掩码转换为十进制并以该格式保存。

然后可以检查是否设置了位位置。

这个查询给出了我想要的所有条目:-):

Select * from USERRIGHTS WHERE BITAND(Rightmask , 16) = 16 (第三位是右起第五位。这个值应该用于按位运算。2^(5-1) = 16)

于 2012-11-16T08:17:18.113 回答
0

在 Linux、UNIX 和 Windows DB2 平台上,9.5 版中引入了位运算符。

于 2012-11-15T20:58:52.833 回答