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