BITAND, BITANDNOT, BITOR, BITXOR und BITNOT Skalarfunktionen

Diese bitweisen Funktionen arbeiten mit der Zweierkomplementdarstellung des ganzzahligen Werts der Eingabeargumente und geben das Ergebnis als entsprechenden ganzzahligen Wert der Basis 10 in einem Datentyp zurück, der auf dem Datentyp der Eingabeargumente basiert.

Read syntax diagramSkip visual syntax diagramBITANDBITANDNOTBITORBITXOR(expression1,expression2 )
Read syntax diagramSkip visual syntax diagramBITNOT(expression)

Das Schema ist SYSIBM.

Tabelle 1. Die Bitbearbeitungsfunktionen
Funktion Beschreibung Ein Bit in der Zweierkomplementdarstellung des Ergebnisses ist:
BITAND Führt eine bitweise UND-Operation aus. 1 nur, wenn die entsprechenden Bits in beiden Argumenten 1 sind.
bitAndNot Löscht jedes Bit im ersten Argument, das im zweiten Argument enthalten ist. Null, wenn das entsprechende Bit im zweiten Argument 1 ist; andernfalls wird das Ergebnis aus dem entsprechenden Bit im ersten Argument kopiert.
BITOR Führt eine bitweise OR-Operation aus. 1, es sei denn, die entsprechenden Bits in beiden Argumenten sind null.
BITXOR Führt eine bitweise exklusive OR-Operation aus. 1, es sei denn, die entsprechenden Bits in beiden Argumenten sind identisch.
BITNOT Führt eine bitweise NOT-Operation aus Gegenüber dem entsprechenden Bit im Argument.
ausdruck oder expression1 oder expression2
Die Argumente müssen ganzzahlige Werte sein, die durch die Datentypen SMALLINT, INTEGER, BIGINT oder DECFLOAT dargestellt werden. Argumente des Typs DECIMAL, REAL oder DOUBLE werden in DECFLOAT umgesetzt. Der Wert wird auf eine ganze Zahl abgeschnitten.

Die Bitmanipulationsfunktionen können bis zu 16 Bit für SMALLINT, 32 Bit für INTEGER, 64 Bit für BIGINT und 113 Bit für DECFLOAT verarbeiten. Der Bereich der unterstützten DECFLOAT-Werte umfasst ganze Zahlen von -2112 bis 2112 -1 und Sonderwerte wie NaN oder INFINITY werden nicht unterstützt (SQLSTATE 42815). Wenn die beiden Argumente unterschiedliche Datentypen haben, wird das Argument, das weniger Bits unterstützt, in einen Wert mit dem Datentyp des Arguments umgesetzt, das mehr Bits unterstützt. Diese Umsetzung wirkt sich auf die Bits aus, die für negative Werte festgelegt werden. Beispiel: Bei -1 als SMALLINT-Wert sind 16 Bit auf 1 gesetzt. Bei der Umsetzung in einen INTEGER-Wert sind 32 Bit auf 1 gesetzt.

Das Ergebnis der Funktionen mit zwei Argumenten hat den Datentyp des Arguments, das in der Vorrangliste des Datentyps für Hochstufung am höchsten ist. Wenn eines der Argumente DECFLOAT ist, ist der Datentyp des Ergebnisses DECFLOAT (34). Wenn eines der Argumente null sein kann, kann das Ergebnis null sein. Wenn eines der Argumente null ist, ist das Ergebnis der Nullwert.

Das Ergebnis der Funktion BITNOT hat denselben Datentyp wie das Eingabeargument, mit der Ausnahme, dass DECIMAL, REAL, DOUBLE oder DECFLOAT (16) DECFLOAT (34) zurückgibt. Wenn das Argument null sein kann, kann das Ergebnis null sein; wenn das Argument null ist, ist das Ergebnis der Nullwert.

Aufgrund von Unterschieden in der internen Darstellung zwischen Datentypen und auf verschiedenen Hardwareplattformen ist die Verwendung von Funktionen (z. B. HEX) oder Hostsprachkonstrukten zum Anzeigen oder Vergleichen interner Darstellungen von BIT-Funktionsergebnissen und -Argumenten datentypabhängig und nicht portierbar. Der Datentyp-und plattformunabhängige Weg, Ergebnisse und Argumente der Funktion BIT anzuzeigen oder zu vergleichen, besteht darin, die tatsächlichen ganzzahligen Werte zu verwenden.

Die Verwendung der Funktion BITXOR wird empfohlen, um Bits in einem Wert umzuschalten. Verwenden Sie die Funktion BITANDNOT, um Bits zu löschen. BITANDNOT (val, pattern) arbeitet effizienter als BITAND (val, BITNOT (pattern)).

Beispiele

Die folgenden Beispiele basieren auf einer Tabelle ITEM mit einer Spalte PROPERTIES des Typs INTEGER.

  • Beispiel 1:Gibt alle Elemente zurück, für die das dritte Eigenschaftsbit gesetzt ist.
       SELECT ITEMID FROM ITEM
         WHERE BITAND(PROPERTIES, 4) = 4
  • Beispiel 2:Gibt alle Elemente zurück, für die das vierte oder sechste Eigenschaftsbit gesetzt ist.
       SELECT ITEMID FROM ITEM
         WHERE BITAND(PROPERTIES, 40) <> 0
  • Beispiel 3: Löschen Sie die zwölfte Eigenschaft des Elements mit der ID 3412.
       UPDATE ITEM
           SET PROPERTIES = BITANDNOT(PROPERTIES, 2048)
         WHERE ITEMID = 3412
  • Beispiel 4: Legen Sie die fünfte Eigenschaft des Elements mit der ID 3412 fest.
       UPDATE ITEM
           SET PROPERTIES = BITOR(PROPERTIES, 16)
         WHERE ITEMID = 3412
  • Beispiel 5: Umschalten der elften Eigenschaft des Elements mit der ID 3412.
       UPDATE ITEM
           SET PROPERTIES = BITXOR(PROPERTIES, 1024)
         WHERE ITEMID = 3412
  • Beispiel 6: Schalten Sie alle Bits in einem 16-Bit-Wert um, bei dem nur das zweite Bit aktiviert ist.
       VALUES BITNOT(CAST(2 AS SMALLINT))
    gibt -3 (mit dem Datentyp SMALLINT) zurück.