如何在WHERE子句中使用按位AND?

时间:2017-05-29 11:18:10

标签: sql oracle bitwise-operators

我们的DB中有一个FLAGS列,用于存储各种标志。这是一个NUMBER列。数字将根据设置的标志而改变。我想从表中选择设置了特定标志的所有行。可以通过使用十六进制值0x0008000000000000L在“FLAGS”列上进行BITWISE AND来获得该标志。我该怎么做?我对Oracle SQL有点新鲜。

2 个答案:

答案 0 :(得分:2)

PLSQL为

提供了一个名为BITAND的函数

像这样使用

SELECT * FROM tab
WHERE BITAND(FLAGS, TO_NUMBER('8000000000000', 'xxxxxxxxxxxxx')) > 0

如果您想了解有关BITAND的更多信息,请查看此页https://www.techonthenet.com/oracle/functions/bitand.php

答案 1 :(得分:1)

 select * from yourtable 
  where bitand(flags, to_number('8000000000000', 'xxxxxxxxxxxxx'))>0;