^ (Bitweises exklusives OR) (Transact-SQL)
Führt einen bitweisen exklusiven OR-Vorgang zwischen zwei ganzzahligen Werten aus.
Transact-SQL-Syntaxkonventionen
Syntax
expression ^ expression
Argumente
expression
Ein gültiger Ausdruck eines beliebigen Datentyps der ganzzahligen Datentypkategorie oder des Datentyps bit, binary oder varbinary. expression wird im bitweisen Vorgang als binäre Zahl behandelt.Hinweis Bei einer bitweisen Operation kann nur ein expression vom Datentyp binary oder varbinary sein.
Ergebnistypen
int, wenn die Eingabewerte vom int-Datentyp sind.
smallint, wenn die Eingabewerte vom smallint-Datentyp sind.
tinyint, wenn die Eingabewerte vom tinyint-Datentyp sind.
Hinweise
Mit dem bitweisen ^-Operator wird zwischen zwei Ausdrücken ein bitweises logisches exklusives OR ausgeführt, indem die jeweils entsprechenden Bits der beiden Ausdrücke verarbeitet werden. Ein Ergebnisbit wird genau dann auf den Wert 1 festgelegt, wenn genau ein Bit, also nicht beide Bits (für das aktuell aufzulösende Bit), der Eingabeausdrücke den Wert 1 aufweist. Falls die Bits beide den Wert 0 oder beide den Wert 1 besitzen, 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 Fall wird smallint expression in den int-Typ konvertiert.
Beispiele
Das folgende Beispiel erstellt eine Tabelle mit dem int-Datentyp, um die ursprünglichen Werte zu speichern, und fügt zwei Werte in eine Zeile ein.
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 das bitweise exklusive OR für die Spalten a_int_value und b_int_value aus.
USE tempdb;
GO
SELECT a_int_value ^ b_int_value
FROM bitwise;
GO
Im Folgenden wird das Resultset aufgeführt:
-----------
225
(1 row(s) affected)
Die Binärdarstellung von 170 (a_int_value oder A) ist 0000 0000 1010 1010. Die Binärdarstellung von 75 (b_int_value oder B) ist 0000 0000 0100 1011. Die Anwendung des bitweisen exklusiven OR-Vorgangs auf diese beiden Werte erzeugt das binäre Ergebnis 0000 0000 1110 0001, was dem dezimalen Wert 225 entspricht.
(A ^ B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 0001
Siehe auch
Verweis
Bitweise Operatoren (Transact-SQL)