Побитовое исключающее ИЛИ в Oracle - PullRequest
7 голосов
/ 03 марта 2009

В SQL Server Я использовал символ ^, однако, похоже, он не работает в Oracle .

Как мне сделать побитовое исключение OR в Oracle?

Ответы [ 3 ]

7 голосов
/ 03 марта 2009

Из документов:

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 для ввода, а затем не заимствуйте или не используйте кариес.

- MarkusQ

5 голосов
/ 03 марта 2009

Есть оператор BITAND:

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

Вы можете создать другие операторы из него; и здесь .

2 голосов
/ 03 марта 2009

Легкого пути нет.

Вы можете преобразовать строковые значения HEX в RAW значения и использовать UTL_RAW:

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

---
 03
...