참과 거짓 사이에 알 수 없음이 있어
NULL = NULL은 참이 아니고 WHERE x = NULL도 원하는 행을 찾지 못해. 값이 비었는지는 IS NULL로 검사해야 해. WHERE x <> 'something'은 NULL 행을 제외하므로 포함하려면 OR x IS NULL을 명시해.
NOT IN의 함정
하위 질의에 NULL이 하나라도 있으면 NOT IN (subquery) 전체가 알 수 없음이 될 수 있어. 존재 여부를 묻는 뜻이라면 NOT EXISTS가 더 안전해. NULL을 값으로 바꿔야 할 때는 COALESCE(a, b, c), 두 값이 같을 때 NULL로 만들려면 NULLIF(a, b)를 써.
NULL까지 포함한 동등성
IS DISTINCT FROM과 IS NOT DISTINCT FROM은 NULL을 보통 값처럼 비교해. 3값 논리를 피하고 싶은 자리에서 유용해. 0과 NULL을 섞지 말고, 값이 0인 경우와 값을 모르는 경우를 뜻부터 구분해.