共用方式為


^ (位獨佔 OR) (Azure 串流分析)

在兩個整數值之間執行位邏輯獨佔 OR (XOR) 運算,評估這兩個運算式中的每個對應位。

語法

expression ^ expression

引數

expression

這是數據類型位或 bigint 的任何有效運算式。 表達式會被視為位運算的二進位數。

傳回類型

如果兩個輸入值都是 bit則 bit

如果一或兩個輸入值都是 bigint,則 bigint

備註

^ 位運算子會在兩個表達式之間執行位邏輯獨佔 OR, 並針對這兩個運算式採用每個對應的位。 如果其中一個 (但不是兩個) 位 (,則結果中的位會設定為 1;如果輸入運算式中的目前位解析) 值為 1;否則,結果中的位會設定為 0。

例如,170 的二進位表示法是 0000 0000 1010 1010。 75 的二進位表示法是 0000 0000 0100 1011。 在這兩個值上執行位 XOR 運算會產生二進位結果 0000 0000 1110 0001,也就是十進位 225。

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

請注意,將 FLOAT 值轉換成 BIGINT,並在其上套用位運算子通常不會傳回與將它轉換成 BIT 相同的結果,並套用相同的運算子:

  • 第一個選項:170 ^ 75.0 => 170 ^ 75 = 225
  • 第二個選項:170 ^ 75.0 => 170 ^ 1 = 171

如需轉換為位的規則,請參閱 數據類型概觀

範例

使用常見的輸入資料集:

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
)

元運算式上套用 運算子:

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

傳回:

bit0 bit1 bitN XOR00 XOR01 XOR10 XOR11 XORnull
false true NULL false true true false NULL

bigint 運算式上套用運算子:

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

傳回:

bigint0 bigint1 bigintN XOR00 XOR01 XOR10 XOR11 XORnull XORvalues
0 1 NULL 0 1 1 0 NULL 225

驗證 輸出類型

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

傳回:

XORtype_bit XORtype_bigint ORtype_mixed
位元 BIGINT BIGINT

另請參閱