Oracle 对数字按位取反,SQL语句应该怎么写?

数据库是oracle,现在需求是要在sql中对某个字段(数字,Long型)的某几个比特位: 1.获取这几个比特位,并转为十进制数;2. 再将这几个比特位置为0

比如:
一个数转为二进制后为11010100

  1. 得到bit2~bit3的数字为01,转为十进制为1

  2. 要把bit2~bit3(下标暂时以0开始)置为0,结果为 11010000

我最初的思路是

  1. 对应比特位与一个该位都是1其他位都是0的数进行按位与,即1101010000001100,通过sql的bitand函数获取再右移2位即可得到01亦即100001100也可以由power(2,4) - power(2,3)得到

  2. 第二个需求,把00001100按位取反,得到11110011,与11010100进行按位与,得到11010000

所以,按位取反怎么实现呢在sql中?谢谢,本人sql新手,着急交差,来伸手了,抱歉。

阅读 5.5k
1 个回答

已解决,ORACLE有BIN_TO_NUM函数,直接写死即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题