如何在DB2中执行按位操作

时间:2012-11-15 16:29:03

标签: sql db2 bit-manipulation

我尝试找出使用BITAND设置的位。

在数据库中,我将用户权限保存为BIGINT,如11011111110001

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

我该怎么做?

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

2 个答案:

答案 0 :(得分:1)

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

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

此查询为所有条目提供了我想要的内容: - ):

从USERRIGHTS中选择* 在哪里BITAND(Rightmask,16)= 16 (第三个位的位置是右边的第五个位。这个值应该用于按位运算.2 ^(5-1)= 16)

答案 1 :(得分:0)

在Linux,UNIX和Windows DB2平台上,版本9.5中引入了bitwise operators