数据库是oracle,现在需求是要在sql中对某个字段(数字,Long型)的某几个比特位: 1.获取这几个比特位,并转为十进制数;2. 再将这几个比特位置为0
比如:
一个数转为二进制后为11010100
得到
bit2~bit3
的数字为01
,转为十进制为1要把
bit2~bit3
(下标暂时以0开始)置为0,结果为11010000
我最初的思路是
对应比特位与一个该位都是1其他位都是0的数进行按位与,即
11010100
与00001100
,通过sql的bitand
函数获取再右移2位即可得到01
亦即1
,00001100
也可以由power(2,4) - power(2,3)
得到第二个需求,把
00001100
按位取反,得到11110011
,与11010100
进行按位与,得到11010000
所以,按位取反怎么实现呢在sql中?谢谢,本人sql新手,着急交差,来伸手了,抱歉。
已解决,ORACLE有
BIN_TO_NUM
函数,直接写死即可。