^(비트 배타적 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 |