NULL의 비교 연산자
SELECT id FROM article WHERE created_at IS NULL
IS
를 사용해야 NULL 값을 비교할 수가 있다. =
을 사용한다면 아무것도 출력되지 않는다.
three-valued logic
- NULL의 비교/논리 연산의 결과로
TRUE
, FALSE
, UNKNOWN
을 가지는 것을 의미한다.
UNKNOWN
이란 TRUE일 수도 있고 FALSE일 수도 있다는 의미이다
- SQL에서 NULL과 비교 연산을 하게되면 그 결과가
UNKNOWN
이다.
- 비교 연산자
예제 |
결과 |
1 = 1 |
TRUE |
1 != 1 |
FALSE |
1 = NULL |
UNKNOWN |
1 != NULL |
UNKNOWN |
1 > NULL |
UNKNOWN |
1 <= NULL |
UNKNOWN |
NULL = NULL |
UNKNOWN |
AND |
TRUE |
FALSE |
UNKNOWN |
TRUE |
TRUE |
FALSE |
UNKNOWN |
FALSE |
FALSE |
FALSE |
FALSE |
UNKNOWN |
UNKNOWN |
FALSE |
UNKNOWN |
OR |
TRUE |
FALSE |
UNKNOWN |
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
UNKNOWN |
UNKNOWN |
TRUE |
UNKNOWN |
UNKNOWN |
NOT |
|
TRUE |
FALSE |
FALSE |
TRUE |
UNKNOWN |
UNKNOWN |
IMPORTANT
WHERE 절은 결과가 TRUE인 데이터만 출력하기 때문에 UNKNOWN인 데이터는 출력되지 않는다.
NOT IN 사용 시 NULL이 있다면
예제 |
결과 |
3 not in (1, 2, 4) |
TRUE |
3 not in (1, 2, 3) |
FALSE |
3 not in (1, 3, NULL) |
FALSE |
3 not in (1, 2, NULL) |
UNKNOWN |