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?

Était-ce utile?

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
scroll top