在SQL Server中,我一直在使用该符号,但是在Oracle^
中似乎不起作用。
如何OR
在 Oracle 中进行按位排他?
在SQL Server中,我一直在使用该符号,但是在Oracle^
中似乎不起作用。
如何OR
在 Oracle 中进行按位排他?
从文档:
function bitor(p1 number, p2 number) return number is
begin
return p1-bitand(p1,p2)+p2;
end;
function bitxor(p1 number, p2 number) return number is
begin
return bitor(p1,p2)-bitand(p1,p2);
end;
要查看这些工作,请遵循仅输入 0 和 1 的逻辑,而不是没有借位或龋齿。
——马库斯
没有简单的方法。
您可以将字符串HEX
值转换为RAW
值并使用UTL_RAW
:
SELECT UTL_RAW.bit_xor(HEXTORAW(TO_CHAR(1, 'FMX')), HEXTORAW(TO_CHAR(2, 'FMX')))
FROM dual
---
03
我在 SQL 中将它用于 XOR:
--9 XOR 7 = 14
SELECT 7+9-2*bitand(7,9) FROM dual