Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Bitand-Funktion

Binär bedeutet „set“ „hat den Wert 1“. "Nicht gesetzt" bedeutet "hat den Wert 0".

Aus den Oracle-Dokumenten für BITAND:

"Das Ergebnis wird in mehreren Schritten berechnet. Zuerst wird jedes Argument A durch den Wert SIGN(A)*FLOOR(ABS(A)) ersetzt. Diese Konvertierung hat den Effekt, dass jedes Argument gegen Null gekürzt wird. Als nächstes wird jedes Argument A (das muss jetzt ein ganzzahliger Wert sein) wird in einen binären n-Bit-Zweierkomplement-Ganzzahlwert konvertiert. Die zwei Bitwerte werden unter Verwendung einer bitweisen UND-Operation kombiniert. Schließlich wird der resultierende n-Bit-Zweierkomplementwert zurück in ZAHL konvertiert."

Einfach gesagt, schneidet diese Funktion ihre Argumente ab, wandelt sie in eine Binärzahl um (derzeit auf 128 Bit begrenzt), verknüpft die beiden Binärzahlen mit UND und gibt das Ergebnis der Umwandlung der Binärzahl zurück in eine ZAHL zurück.

Hier ist das Ergebnis aller möglichen Kombinationen von Null und Eins:

SELECT BITAND(0, 0) AS "0, 0",  -- i.e. 0 AND 0 = 0
       BITAND(0, 1) AS "0, 1",  -- i.e. 0 AND 1 = 0
       BITAND(1, 0) AS "1, 0",  -- i.e. 1 AND 0 = 0
       BITAND(1, 1) AS "1, 1"   -- i.e. 1 AND 1 = 1
  FROM DUAL;

Ein komplexeres Beispiel wäre die UND-Verknüpfung von 11 und 5. Im Binärformat wird 11 dezimal zu "1011". 5 dezimal wird "0101" binär. Wenn Sie diese Werte mit UND verknüpfen, wie in

1 0 1 1
0 1 0 1
-------
0 0 0 1

Sie erhalten 1 binär, was immer noch 1 ist, wenn es zurück in dezimal konvertiert wird.

Teilen und genießen.