我尝试找出使用BITAND
设置的位。
在数据库中,我将用户权限保存为BIGINT,如1101111
或1110001
。
在示例中,如果设置了第三位,我必须找出表中的元素。 在这种情况下。查询应该找到第一个。
我该怎么做?
Select * from USERRIGHTS
WHERE BITAND(Rightmask , 4) = 1 ??????
答案 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。