Побитовое исключающее ИЛИ в Oracle
-
03-07-2019 - |
Вопрос
В SQL-сервер Я использовал ^
символ, однако, похоже, это не работает в Оракул.
Как мне сделать побитовое исключение OR
в Оракле?
Решение
Из документов:
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, а не отсутствие заимствований или кариеса.
-- МаркусКью
Другие советы
Есть оператор BITAND:
select bitand(49,54)+0 from dual;
Ты можешь развивать других операторов от него;и здесь.
Нет простого пути.
Вы можете использовать строку HEX
ценности в RAW
ценности и использование UTL_RAW
:
SELECT UTL_RAW.bit_xor(HEXTORAW(TO_CHAR(1, 'FMX')), HEXTORAW(TO_CHAR(2, 'FMX')))
FROM dual
---
03
Не связан с StackOverflow