OU exclusif au niveau des bits dans Oracle
-
03-07-2019 - |
Question
Sous SQL Server , le symbole ^
est utilisé, mais cela ne semble pas fonctionner sous Oracle .
Comment puis-je effectuer un OU
exclusif au niveau des bits dans Oracle?
La solution
À partir de la documentation:
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;
Pour voir si cela fonctionne, suivez la logique avec seulement 0 et 1 pour l'entrée, et puis pas qu'il n'y ait ni emprunt ni carie.
- MarkusQ
Autres conseils
Il y a l'opérateur BITAND:
select bitand(49,54)+0 from dual;
Vous pouvez créer les autres opérateurs à partir de celui-ci; et ici .
Il n'y a pas de moyen facile.
Vous pouvez convertir les valeurs HEX
de chaîne en valeurs RAW
et utiliser UTL_RAW
:
SELECT UTL_RAW.bit_xor(HEXTORAW(TO_CHAR(1, 'FMX')), HEXTORAW(TO_CHAR(2, 'FMX')))
FROM dual
---
03
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow