- Kategorien:
BITNOT¶
Gibt die bitweise Negation eines numerischen oder binären Ausdrucks zurück.
- Aliasse:
BIT_NOT
Syntax¶
BITNOT( <expr> )
Argumente¶
expr
Dieser Ausdruck muss einen INTEGER-Wert, einen BINARY-Wert oder einen Wert eines Datentyps ergeben, der in einen INTEGER-Wert umgewandelt werden kann.
Rückgabewerte¶
Gibt einen INTEGER-Wert, einen BINARY-Wert oder einen NULL-Wert zurück:
Wenn der Eingabeausdruck einen INTEGER-Wert enthält, wird ein INTEGER-Wert zurückgegeben, der die bitweise Negation des Eingabeausdrucks darstellt.
Wenn der Eingabeausdruck einen BINARY-Wert enthält, wird ein BINARY-Wert zurückgegeben, der die bitweise Negation des Eingabeausdrucks darstellt.
Wenn der Eingabewert NULL ist, wird NULL zurückgegeben.
Nutzungshinweise¶
Wenn der Datentyp des Arguments numerisch aber nicht INTEGER ist (z. B. FLOAT, DECIMAL usw.), dann wird das Argument in einen INTEGER-Wert umgewandelt.
Wenn der Datentyp des Arguments eine Zeichenfolge ist (z. B. VARCHAR), dann wird das Argument in einen INTEGER-Wert umgewandelt, wenn dies möglich ist. So wird beispielsweise die Zeichenfolge
12.3
in12
umgewandelt. Wenn der Wert nicht in einen INTEGER-Wert umgewandelt werden kann, wird der Wert als NULL behandelt.Die Funktion wandelt Argumente nicht implizit in BINARY-Werte um.
Beispiele¶
Die folgenden Abschnitte enthalten Beispiele für INTEGER-Argumentwerte und BINARY-Argumentwerte.
Verwenden von BITNOT mit INTEGER-Argumentwerten¶
Erstellen Sie eine einfache Tabelle und Daten:
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.
;
Führen Sie die Abfrage aus:
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 |
+------+-------+--------------+--------------+
Verwenden von BITNOT mit BINARY-Argumentwerten¶
Erstellen Sie eine einfache Tabelle und fügen Sie die Daten ein:
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);
Bemerkung
Die BINARY-Werte werden in der Notation x'value'
eingefügt, wobei value
hexadezimale Ziffern enthält. Weitere Informationen dazu finden Sie unter Eingabe und Ausgabe von Binärdaten.
Führen Sie die Abfrage aus:
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 |
+------+------+----------+--------------+--------------+--------------+