二进制面具oracle

San*_*nor 3 sql sql-server oracle oracle10g

我在SQL-Server中有一个SQL命令,我需要将它迁移到Oracle,但是有一部分sql我不明白如何翻译它.这是sql:

select * from myTable where id = @id and (Mask & @Mask) = @Mask
Run Code Online (Sandbox Code Playgroud)

我认为这是一个二元掩码,但我不太确定,我不知道我是否可以在Oracle中这样做,你能帮助我吗?

非常感谢你

小智 5

你是对的 - 这是二元面具.

Oracle仅提供BITAND功能,其他(BITOR,BITXOR)必须是自制的.

使用BITAND函数,此选择将​​返回值2:

SELECT BITAND(6,2) FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

因此,您在Oracle中的查询可以通过以下方式重写:

select * from myTable where id = :id and BITAND(Mask, :Mask) = :Mask
Run Code Online (Sandbox Code Playgroud)