BOOLXOR
BOOLXOR
두 숫자 표현식의 Boolean XOR을 계산하는 조건 표현식 함수예요. 즉 둘 중 하나만, 둘 다가 아니라, 하나의 표현식이 true일 때를 나타내요. Boolean 의미론에 따라 음수를 포함한 0이 아닌 값은 true로, 0 값은 false로 취급돼요.
출처: 공식 문서
본문
두 숫자 표현식의 Boolean XOR을 계산합니다. 즉, 둘 중 하나의 표현식은 true이지만 둘 모두가 true는 아닌 경우를 나타냅니다. Boolean 의미론에 따라:
-
음수를 포함한 0이 아닌 값은 true로 간주됩니다.
-
0 값은 false로 간주됩니다.
그 결과, 함수는 다음을 반환합니다:
-
한 표현식이 0이 아니고 다른 표현식이 0이면 True.
-
두 표현식이 모두 0이 아니거나 모두 0이면 False.
-
하나 또는 두 표현식이 모두 NULL이면 NULL.
참고 (See also): BOOLAND, BOOLNOT, BOOLOR
구문 (Syntax)
BOOLXOR( <expr1> , <expr2> )
인자 (Arguments)
숫자 표현식입니다.
숫자 표현식입니다.
반환값 (Returns)
이 함수는 BOOLEAN 또는 NULL 타입의 값을 반환합니다.
사용 참고 사항 (Usage notes)
이 함수는 부동 소수점 숫자를 반올림합니다. 따라서 0이 아닌 부동 소수점 숫자를 0으로 반올림할 때 예상치 못한 결과를 반환할 수 있습니다.
이 동작의 예와 해결 방법은 Compute Boolean XOR results for floating-point numbers를 참고하세요.
예제 (Examples)
다음 예제들은 BOOLXOR 함수를 사용합니다.
정수와 NULL 값에 대한 Boolean XOR 결과 계산하기
다음 쿼리는 정수와 NULL 값에 대한 Boolean XOR 결과를 계산합니다:
SELECT BOOLXOR(2, 0),
BOOLXOR(1, -1),
BOOLXOR(0, 0),
BOOLXOR(NULL, 3),
BOOLXOR(NULL, 0),
BOOLXOR(NULL, NULL);
+---------------+----------------+---------------+------------------+------------------+---------------------+
| BOOLXOR(2, 0) | BOOLXOR(1, -1) | BOOLXOR(0, 0) | BOOLXOR(NULL, 3) | BOOLXOR(NULL, 0) | BOOLXOR(NULL, NULL) |
|---------------+----------------+---------------+------------------+------------------+---------------------|
| True | False | False | NULL | NULL | NULL |
+---------------+----------------+---------------+------------------+------------------+---------------------+
부동 소수점 숫자에 대한 Boolean XOR 결과 계산하기
다음 예제들은 0으로 반올림되는 부동 소수점 숫자에 대해 함수가 예상치 못한 결과를 반환하는 방식을 보여줍니다.
다음 쿼리들에서는 다음 함수 호출들에 대해 False 결과가 예상될 수 있지만, 함수가 0이 아닌 부동 소수점 값을 0으로 반올림하기 때문에 True를 반환합니다:
SELECT BOOLXOR(2, 0.3);
+-----------------+
| BOOLXOR(2, 0.3) |
|-----------------|
| True |
+-----------------+
SELECT BOOLXOR(-0.4, 5);
+------------------+
| BOOLXOR(-0.4, 5) |
|------------------|
| True |
+------------------+
마찬가지로 다음 함수 호출들에는 True 결과가 예상될 수 있지만 False를 반환합니다:
SELECT BOOLXOR(0, 0.3);
+-----------------+
| BOOLXOR(0, 0.3) |
|-----------------|
| False |
+-----------------+
SELECT BOOLXOR(-0.4, 0);
+------------------+
| BOOLXOR(-0.4, 0) |
|------------------|
| False |
+------------------+
필요하다면 양수 부동 소수점 값에 대해 CEIL 함수를 사용해 이 반올림 동작을 해결할 수 있습니다. 예를 들어 다음 쿼리는 False를 반환합니다:
SELECT BOOLXOR(2, CEIL(0.3));
+-----------------------+
| BOOLXOR(2, CEIL(0.3)) |
|-----------------------|
| False |
+-----------------------+
음수 부동 소수점 값에 대해서는 FLOOR 함수를 사용해 이 반올림 동작을 해결할 수 있습니다. 예를 들어 다음 쿼리는 False를 반환합니다:
SELECT BOOLXOR(FLOOR(-0.4), 5);
+-------------------------+
| BOOLXOR(FLOOR(-0.4), 5) |
|-------------------------|
| False |
+-------------------------+