Catégories :

Fonctions d’expression au niveau du bit

BITXOR

Renvoie XOR au niveau du bit pour deux expressions numériques.

Alias :

BIT_XOR

Voir aussi :

BITXOR_AGG

Syntaxe

BITXOR( <expr1> , <expr2> )
Copy

Arguments

expr1

Cette expression doit correspondre à un type de données pouvant être converti en INTEGER.

expr2

Cette expression doit correspondre à un type de données pouvant être converti en INTEGER.

Renvoie

Renvoie un entier qui représente le bitwise XOR des expressions d’entrée.

Notes sur l’utilisation

  • Si le type de données de l’un ou l’autre des arguments est numérique, mais pas INTEGER (par exemple, FLOAT, DECIMAL, etc.), l’argument est alors converti en INTEGER.

  • Si le type de données de l’un ou l’autre des arguments est une chaîne (par exemple, VARCHAR), l’argument est alors converti en INTEGER si possible. Par exemple, la chaîne « 12,3 » est convertie en 12. Si la valeur ne peut pas être convertie en INTEGER, elle est traitée comme NULL.

  • Si l’une des valeurs est NULL, le résultat est NULL.

Exemples

Cet exemple montre comment utiliser BITAND(), BITOR() et BITXOR() :

Créez une table et des données simples :

CREATE TABLE bits (ID INTEGER, bit1 INTEGER, bit2 INTEGER);
Copy
INSERT INTO bits (ID, bit1, bit2) VALUES 
    (   11,    1,     1),    -- Bits are all the same.
    (   24,    2,     4),    -- Bits are all different.
    (   42,    4,     2),    -- Bits are all different.
    ( 1624,   16,    24),    -- Bits overlap.
    (65504,    0, 65504),    -- Lots of bits (all but the low 6 bits)
    (    0, NULL,  NULL)     -- No bits
    ;
Copy

Exécutez la requête :

SELECT bit1, bit2, BITAND(bit1, bit2), BITOR(bit1, bit2), BITXOR(bit1, BIT2)
  FROM bits
  ORDER BY bit1;
Copy

Sortie :

+------+-------+--------------------+-------------------+--------------------+
| BIT1 |  BIT2 | BITAND(BIT1, BIT2) | BITOR(BIT1, BIT2) | BITXOR(BIT1, BIT2) |
|------+-------+--------------------+-------------------+--------------------|
|    0 | 65504 |                  0 |             65504 |              65504 |
|    1 |     1 |                  1 |                 1 |                  0 |
|    2 |     4 |                  0 |                 6 |                  6 |
|    4 |     2 |                  0 |                 6 |                  6 |
|   16 |    24 |                 16 |                24 |                  8 |
| NULL |  NULL |               NULL |              NULL |               NULL |
+------+-------+--------------------+-------------------+--------------------+
Copy