^ (Bitweises exklusives OR) (Transact-SQL)
Führt einen bitweisen exklusiven OR-Vorgang zwischen zwei ganzzahligen Werten aus.
Transact-SQL-Syntaxkonventionen
-
expression
-
Ein gültiger Ausdruck von einem Datentyp aus der ganzzahligen Datentypkategorie oder vom Datentyp bit, binary oder varbinary. expression wird für den bitweisen Vorgang als Binärzahl behandelt.
Hinweis: Nur jeweils ein expression-Wert kann bei einem bitweisen Vorgang entweder vom Datentyp binary oder varbinary sein.
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-Wert vom smallint-Datentyp und der rechte expression-Wert vom int-Datentyp), wird das Argument mit dem kleineren Datentyp in den größeren Datentyp konvertiert. In diesem Fall wird der expression-Wert vom Typ smallint in einen int-Ausdruck konvertiert.
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
Verweis
Ausdrücke (Transact-SQL)Operatoren (Transact-SQL)