Catégories :

Fonctions d’expression au niveau du bit

BITSHIFTRIGHT

Décale les bits d’une expression numérique de n positions vers la droite.

Alias :

BIT_SHIFTRIGHT

Voir aussi :

BITSHIFTLEFT

Syntaxe

BITSHIFTRIGHT( <expr1> , <n> )

Arguments

expr1

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

n

Le nombre de bits du déplacement.

Notes sur l’utilisation

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

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

  • Si l’argument est NULL, le résultat sera NULL.

Exemples

Cet exemple montre comment utiliser BITSHIFTLEFT et BITSHIFTRIGHT :

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

CREATE TABLE bits (ID INTEGER, bit1 INTEGER, bit2 INTEGER);
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
    ;

Exécutez la requête :

SELECT bit1, bit2, BITSHIFTLEFT(bit1, 1), BITSHIFTRIGHT(bit2, 1) FROM bits;

Sortie :

+------+-------+-----------------------+------------------------+
| BIT1 |  BIT2 | BITSHIFTLEFT(BIT1, 1) | BITSHIFTRIGHT(BIT2, 1) |
|------+-------+-----------------------+------------------------|
|    1 |     1 |                     2 |                      0 |
|    2 |     4 |                     4 |                      2 |
|    4 |     2 |                     8 |                      1 |
|   16 |    24 |                    32 |                     12 |
|    0 | 65504 |                     0 |                  32752 |
| NULL |  NULL |                  NULL |                   NULL |
+------+-------+-----------------------+------------------------+