^ (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 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. |
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-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.
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.
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
Ausdrücke (Transact-SQL)
Operatoren (Transact-SQL)
Andere Ressourcen
Bitweise Operatoren (Datenbankmodul)