| (Bitweises OR) (Transact-SQL)
Führt eine bitweise logische OR-Operation zwischen zwei gegebenen ganzzahligen Werten durch, die innerhalb von Transact-SQL-Anweisungen in binäre Ausdrücke umgewandelt wurden.
Syntax
expression | expression
Argumente
expression
Jeder gültige Ausdruck von einem Datentyp aus der ganzzahligen Datentypkategorie oder die Datentypen bit, binary oder varbinary. expression wird für die bitweise Operation als binäre Zahl behandelt.Hinweis Bei einer bitweisen Operation kann nur ein expression vom Datentyp binary oder varbinary sein.
Ergebnistypen
Gibt einen Wert vom int-Datentyp zurück, wenn die Eingabewerte vom int-Datentyp sind, einen smallint-Wert bei smallint-Eingabewerten oder einen tinyint-Wert, wenn die Eingabewerte vom tinyint-Datentyp sind.
Hinweise
Mit dem bitweisen |-Operator wird zwischen zwei Ausdrücken ein bitweises logisches OR ausgeführt, indem die jeweils entsprechenden Bits der beiden Ausdrücke verarbeitet werden. Ein Ergebnisbit wird dann auf den Wert 1 festgelegt, wenn mindestens eines der Bits (für das aktuell aufzulösende Bit) der Eingabeausdrücke den Wert 1 aufweist. Falls keines der Bits in den Eingabeausdrücken den Wert 1 hat, wird das entsprechende Bit im Ergebnis auf 0 festgelegt.
Wenn der linke und der rechte Ausdruck unterschiedliche ganzzahlige Datentypen aufweisen (beispielsweise ist der linke expression vom smallint-Datentyp und der rechte expression vom int-Datentyp), wird das Argument mit dem kleineren Datentyp in den größeren Datentyp konvertiert. In diesem Beispiel wird smallintexpression in den int-Typ konvertiert.
Beispiele
Das folgende Beispiel erstellt zum Anzeigen der ursprünglichen Werte eine Tabelle mit Werten vom int-Datentyp und gibt der Tabelle die Form einer einzelnen Zeile.
USE tempdb;
GO
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'bitwise')
DROP TABLE bitwise;
GO
CREATE TABLE bitwise
(
a_int_value int NOT NULL,
b_int_value int NOT NULL
);
GO
INSERT bitwise VALUES (170, 75);
GO
Die folgende Abfrage führt ein bitweises OR zwischen den Spalten a_int_value und b_int_value durch.
USE tempdb;
GO
SELECT a_int_value | b_int_value
FROM bitwise;
GO
Dies ist das Resultset.
-----------
235
(1 row(s) affected)
Die binäre Darstellung von 170 (a_int_value, unten mit A bezeichnet) ist 0000 0000 1010 1010. Die binäre Darstellung von 75 (b_int_value, unten mit B bezeichnet) ist 0000 0000 0100 1011. Die Anwendung einer bitweisen OR-Operation auf diese beiden Werte erzeugt das binäre Ergebnis 0000 0000 1110 1011, was dem dezimalen Wert 235 entspricht.
(A | B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 1011