Freigeben über


^ (Bitweise exklusiv ODER)

✅ Azure Stream Analytics ✅ Fabric Eventstream

Führt einen bitweise logischen exklusiven OR (XOR)-Vorgang zwischen zwei ganzzahligen Werten aus, wobei jedes entsprechende Bit aus beiden Ausdrücken ausgewertet wird.

Syntax

expression ^ expression

Argumente

Ausdruck

Ist ein beliebiger gültiger Ausdruck der Datentypen Bit oder Bigint. Der Ausdruck wird als binäre Zahl für den bitweisen Vorgang behandelt.

Rückgabetypen

bit , wenn beide Eingabewerte Bit sind.

bigint , wenn ein oder beide Eingabewerte groß sind.

Bemerkungen

Der ^-Bitweise-Operator führt einen bitweise logischen exklusiven OR zwischen den beiden Ausdrücken aus, wobei jedes entsprechende Bit für beide Ausdrücke verwendet wird. Die Bits im Ergebnis werden auf 1 festgelegt, wenn beide Bits (für das aktuelle Bit, das aufgelöst wird) in den Eingabeausdrücken den Wert 1 aufweisen; andernfalls wird das Bit im Ergebnis auf 0 festgelegt.

Zur Veranschaulichung ist die binäre Darstellung von 170 0000 0000 1010 1010. Die binäre Darstellung von 75 ist 0000 0000 0100 1011. Durch ausführen des bitweisen XOR-Vorgangs für diese beiden Werte wird das binäre Ergebnis 0000 0000 1110 0001 erzeugt, das dezimal 225 ist.

(170 ^ 75)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 0001

Es ist zu beachten, dass das Umwandeln eines FLOAT-Werts in BIGINT und das Anwenden eines bitweisen Operators darauf meistens nicht dasselbe Ergebnis wie das Umwandeln in BIT und das Anwenden desselben Operators zurückgibt:

  • Erste Option: 170 ^ 75,0 => 170 ^ 75 = 225
  • Zweite Option: 170 ^ 75,0 => 170 ^ 1 = 171

Informationen zu den Regeln der Konvertierung in Bit finden Sie in der Übersicht über Datentypen.

Beispiele

Mit einem allgemeinen Eingabe-Dataset:

WITH MyCTE AS (
	SELECT
		CAST(0 AS BIT) AS bit0,
		CAST(1 AS BIT) AS bit1,
		CAST(NULL AS BIT) AS bitN,
		CAST(0 AS BIGINT) AS bigint0,
		CAST(1 AS BIGINT) AS bigint1,
		CAST(NULL AS BIGINT) AS bigintN
	FROM input
)

Anwenden des Operators auf Bitausdrücke :

SELECT
	bit0,
	bit1,
	bitN,
	bit0 ^ bit0 AS XOR00,
	bit0 ^ bit1 AS XOR01,
	bit1 ^ bit0 AS XOR10,
	bit1 ^ bit1 AS XOR11,
	bitN ^ bit1 AS XORnull
INTO bitXOR
FROM MyCTE

Rückgabewerte:

bit0 bit1 bitN XOR00 XOR01 XOR10 XOR11 XORnull
Falsch Wahr NULL Falsch Wahr Wahr Falsch NULL

Anwenden des Operators auf bigint-Ausdrücke :

SELECT
	bigint0,
	bigint1,
	bigintN,
	bigint0 ^ bigint0 AS XOR00,
	bigint0 ^ bigint1 AS XOR01,
	bigint1 ^ bigint0 AS XOR10,
	bigint1 ^ bigint1 AS XOR11,
	bigintN ^ bigint1 AS XORnull,
	170 ^ 75 AS XORvalues
INTO bigintXOR
FROM MyCTE

Rückgabewerte:

bigint0 bigint1 bigintN XOR00 XOR01 XOR10 XOR11 XORnull XOR-Werte
0 1 NULL 0 1 1 0 NULL 225

Überprüfen der Ausgabetypen:

SELECT
	GetType(bit0 ^ bit0) AS XORtype_bit,
	GetType(bigint0 ^ bigint0) AS XORtype_bigint,
	GetType(bit0 ^ bigint0) AS XORtype_mixed
INTO typesXOR
FROM MyCTE

Rückgabewerte:

XORtype_bit XORtype_bigint ORtype_mixed
Bit bigint bigint

Siehe auch