Oracle
 sql >> Base de données >  >> RDS >> Oracle

fonction oracle bitand

En binaire, "set" signifie "a la valeur 1". "Non défini" signifie "a la valeur 0".

À partir de la documentation Oracle pour BITAND :

"Le résultat est calculé en plusieurs étapes. Dans un premier temps, chaque argument A est remplacé par la valeur SIGN(A)*FLOOR(ABS(A)). Cette conversion a pour effet de tronquer chaque argument vers zéro. Ensuite, chaque argument A (qui doit être maintenant une valeur entière) est convertie en une valeur entière binaire de complément à deux de n bits. Les deux valeurs de bits sont combinées à l'aide d'une opération ET au niveau du bit. Enfin, la valeur de complément à deux de n bits résultante est reconvertie en NUMBER."

En termes simples, cette fonction tronque ses arguments, les convertit en un nombre binaire (actuellement limité à 128 bits), ET regroupe les deux nombres binaires et renvoie le résultat de la conversion du nombre binaire en NOMBRE.

Voici le résultat de toutes les combinaisons possibles de zéro et un :

SELECT BITAND(0, 0) AS "0, 0",  -- i.e. 0 AND 0 = 0
       BITAND(0, 1) AS "0, 1",  -- i.e. 0 AND 1 = 0
       BITAND(1, 0) AS "1, 0",  -- i.e. 1 AND 0 = 0
       BITAND(1, 1) AS "1, 1"   -- i.e. 1 AND 1 = 1
  FROM DUAL;

Un exemple plus complexe serait l'association AND entre 11 et 5. En binaire, 11 décimal devient "1011". 5 décimal devient "0101" binaire. Si vous ET ces valeurs ensemble, comme dans

1 0 1 1
0 1 0 1
-------
0 0 0 1

vous obtenez 1 binaire, qui est toujours 1 lorsqu'il est reconverti en décimal.

Partagez et profitez.