Quick Reference
sql
value = NULL -- TRUE가 아니라 UNKNOWN
value IS NULL -- NULL 검사
value IS NOT NULL -- non-NULL 검사
COALESCE(value, 0) -- 첫 non-NULL 값 선택SQL 조건식은 TRUE, FALSE, UNKNOWN을 가집니다. WHERE는 TRUE인 row만 남기므로 NULL이 섞인 비교는 예상보다 많은 row를 제외할 수 있습니다.
비교와 집계
대부분의 일반 비교와 산술은 NULL 입력에 NULL 또는 UNKNOWN을 반환합니다. NOT IN의 후보에 NULL이 있으면 전체 조건이 UNKNOWN이 될 수 있으므로 nullable subquery에서는 NOT EXISTS가 의도를 더 명확히 표현할 때가 많습니다.
COUNT(*)는 row를 세고 COUNT(column)은 해당 column이 non-NULL인 row만 셉니다. Unique constraint, sort order와 NULL 동등성은 database 제품과 옵션에 따라 차이가 있으므로 schema 계약을 확인합니다.
자주 틀리는 점
- NULL을 0,
false, 빈 문자열과 같은 값으로 취급하지 않습니다. column = NULL또는column <> NULL로 검사하지 않습니다.COALESCE로 바꾼 기본값이 실제 데이터와 구분되어야 하는지 확인합니다.- Nullable key가 join 결과에서 빠지는 이유를 outer join 종류와 함께 확인합니다.
참고 링크
2 sources