Database
[DATABASE] NULL
ju_young
2023. 11. 23. 17:38
728x90
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
AND | TRUE | FALSE | UNKNOWN |
---|---|---|---|
TRUE | TRUE | FALSE | UNKNOWN |
FALSE | FALSE | FALSE | FALSE |
UNKNOWN | UNKNOWN | FALSE | UNKNOWN |
- OR
OR | TRUE | FALSE | UNKNOWN |
---|---|---|---|
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | UNKNOWN |
UNKNOWN | TRUE | UNKNOWN | UNKNOWN |
- NOT
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 |
728x90