7

SQL Server中,我一直在使用该符号,但是在Oracle^中似乎不起作用。

如何OR在 Oracle 中进行按位排他?

4

4 回答 4

9

从文档:

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 的逻辑,而不是没有借位或龋齿。

——马库斯

于 2009-03-03T00:43:54.523 回答
5

有 BITAND 运算符:

select bitand(49,54)+0 from dual;

您可以从中构建其他运算符

于 2009-03-03T00:14:29.040 回答
3

没有简单的方法。

您可以将字符串HEX值转换为RAW值并使用UTL_RAW

SELECT UTL_RAW.bit_xor(HEXTORAW(TO_CHAR(1, 'FMX')), HEXTORAW(TO_CHAR(2, 'FMX')))
FROM dual

---
 03
于 2009-03-03T00:19:39.450 回答
0

我在 SQL 中将它用于 XOR:

--9 XOR 7 = 14
SELECT 7+9-2*bitand(7,9) FROM dual
于 2022-02-25T07:55:48.273 回答