다음을 통해 공유


^(비트 배타적 OR)(Azure Stream Analytics)

두 정수 값 간에 XOR(비트 논리 배타적 OR) 연산을 수행하여 두 식에서 각 해당 비트를 평가합니다.

Syntax

expression ^ expression

인수

expression

데이터 형식 비트 또는 bigint의 유효한 식입니다. 식은 비트 연산에 대한 이진 숫자로 처리됩니다.

반환 형식

입력 값이 모두 비트이면 비트입니다.

하나 또는 둘 다 입력 값이 bigint이면 bigint입니다.

설명

^ 비트 연산자는 두 식 간에 비트 논리 배타적 OR를 수행하여 두 식에 해당하는 각 비트를 사용합니다. 입력 식의 비트(현재 확인 중인 비트)에 값이 1이면 결과의 비트가 1로 설정됩니다. 그렇지 않으면 결과의 비트가 0으로 설정됩니다.

예를 들어 170의 이진 표현은 0000 0000 1010 1010입니다. 75의 이진 표현은 0000 0000 0100 1011입니다. 이러한 두 값에 대해 비트 XOR 연산을 수행하면 이진 결과 0000 0000 1110 0001이 생성됩니다( 10진수 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

HRESULT = NO_ERROR를

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

HRESULT = NO_ERROR를

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

HRESULT = NO_ERROR를

XORtype_bit XORtype_bigint ORtype_mixed
bit bigint bigint

추가 정보