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