Kategorien:

Bitweise Ausdrucksfunktionen

BITNOT

Gibt die bitweise Negation eines numerischen oder binären Ausdrucks zurück.

Aliasse:

BIT_NOT

Syntax

BITNOT( <expr> ) 
Copy

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 in 12 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); 
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

Führen Sie die Abfrage aus:

SELECT bit1, bit2, BITNOT(bit1), BITNOT(bit2) FROM bits ORDER BY bit1; 
Copy
+------+-------+--------------+--------------+ | 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); 
Copy

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; 
Copy
+------+------+----------+--------------+--------------+--------------+ | 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 | +------+------+----------+--------------+--------------+--------------+