- Catégories :
BITNOT¶
Renvoie la négation au niveau du bit d’une expression numérique ou binaire.
- Alias :
BIT_NOT
Syntaxe¶
BITNOT( <expr> )
Arguments¶
expr
Cette expression doit être évaluée à une valeur INTEGER, une valeur BINARY ou une valeur d’un type de données qui peut être convertie en une valeur INTEGER.
Renvoie¶
Renvoie une valeur INTEGER, une valeur BINARY ou NULL :
Lorsque l’expression d’entrée contient une valeur INTEGER, renvoie une valeur INTEGER qui représente la négation au niveau du bit de l’expression d’entrée.
Lorsque l’expression d’entrée contient une valeur BINARY, renvoie une valeur BINARY qui représente la négation au niveau du bit de l’expression d’entrée.
Si la valeur d’entrée est NULL, retourne NULL.
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 est alors converti en valeur INTEGER.
Si le type de données de l’argument est une chaîne (par exemple, VARCHAR), l’argument est alors converti en une valeur INTEGER si possible. Par exemple, la chaîne
12.3
devient12
. Si la valeur ne peut pas être convertie en valeur INTEGER, elle est traitée comme NULL.La fonction ne convertit pas implicitement les arguments en valeurs BINARY.
Exemples¶
Les sections suivantes contiennent des exemples de valeurs d’argument INTEGER et de valeurs d’argument BINARY.
Utilisation de BITNOT avec des valeurs d’argument INTEGER¶
Créez une table et des données simples :
CREATE OR REPLACE 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,
BITNOT(bit1),
BITNOT(bit2)
FROM bits
ORDER BY bit1;
+------+-------+--------------+--------------+
| BIT1 | BIT2 | BITNOT(BIT1) | BITNOT(BIT2) |
|------+-------+--------------+--------------|
| 0 | 65504 | -1 | -65505 |
| 1 | 1 | -2 | -2 |
| 2 | 4 | -3 | -5 |
| 4 | 2 | -5 | -3 |
| 16 | 24 | -17 | -25 |
| NULL | NULL | NULL | NULL |
+------+-------+--------------+--------------+
Utilisation de BITNOT avec des valeurs d’argument BINARY¶
Créez un tableau simple et insérez les données :
CREATE OR REPLACE TABLE bits (ID INTEGER, bit1 BINARY(2), bit2 BINARY(2), bit3 BINARY(4));
INSERT INTO bits VALUES
(1, x'1010', x'0101', x'11001010'),
(2, x'1100', x'0011', x'01011010'),
(3, x'BCBC', x'EEFF', x'ABCDABCD'),
(4, NULL, NULL, NULL);
Note
Les valeurs BINARY sont insérées à l’aide de la notation x'value'
, où value
contient des chiffres hexadécimaux. Pour plus d’informations, voir Entrée et sortie binaires.
Exécutez la requête :
SELECT bit1,
bit2,
bit3,
BITNOT(bit1),
BITNOT(bit2),
BITNOT(bit3)
FROM bits;
+------+------+----------+--------------+--------------+--------------+
| BIT1 | BIT2 | BIT3 | BITNOT(BIT1) | BITNOT(BIT2) | BITNOT(BIT3) |
|------+------+----------+--------------+--------------+--------------|
| 1010 | 0101 | 11001010 | EFEF | FEFE | EEFFEFEF |
| 1100 | 0011 | 01011010 | EEFF | FFEE | FEFEEFEF |
| BCBC | EEFF | ABCDABCD | 4343 | 1100 | 54325432 |
| NULL | NULL | NULL | NULL | NULL | NULL |
+------+------+----------+--------------+--------------+--------------+