1. NULL은 비교 연산에서 항상 FALSE 또는 UNKNOWN
SQL에서 NULL은 "값이 없음"을 뜻합니다.
그래서 다음 조건들은 모두 FALSE 또는 UNKNOWN으로 처리됩니다.
- 컬럼 = NULL → 항상 FALSE (실제로는 UNKNOWN)
- 컬럼 LIKE '%' → 컬럼이 NULL이면 결과는 UNKNOWN
- 컬럼 LIKE '%' → 컬럼이 NULL이면 결과는 UNKNOWN
따라서 WHERE 컬럼 = 'abc' 조건은 컬럼이 NULL인 행을 전혀 포함하지 않습니다.
2. NULL 값을 정확히 조회하려면 IS NULL 사용
NULL을 직접 조회할 때는 반드시 IS NULL 조건을 사용해야 합니다.
SELECT * FROM 테이블명 WHERE 컬럼 IS NULL;
컬럼 = NULL은 절대 쓰면 안 됩니다.
3. NULL 포함 조회 방법
예를 들어, 컬럼이 'abc'이거나 NULL인 행 모두 조회하려면:
3. NULL 포함 조회 방법
예를 들어, 컬럼이 'abc'이거나 NULL인 행 모두 조회하려면:
SELECT * FROM 테이블명 WHERE 컬럼 = 'abc' OR 컬럼 IS NULL;
마찬가지로, LIKE 조건과 NULL 포함 조회는 이렇게 씁니다:
SELECT * FROM 테이블명 WHERE 컬럼 LIKE '%패턴%' OR 컬럼 IS NULL;
4. NVL 함수를 활용한 NULL 처리
NVL 함수는 NULL 값을 다른 값으로 대체합니다. 예를 들어:
WHERE NVL(컬럼, '대체값') LIKE '%패턴%'
이때 주의할 점은 NVL(컬럼, '%') LIKE '%' 처럼 사용하면 NULL도 포함되지만, 조건 자체가 항상 참이 되어 버려 실질적인 필터링 의미가 없어집니다.
정리
- NULL은 비교 연산자(=, LIKE 등)에서 항상 제외된다.
- NULL을 조회하려면 IS NULL을 꼭 써야 한다.
- NULL 포함 조건은 OR 컬럼 IS NULL을 추가하거나 NVL로 처리 가능하나, 무조건 참이 되지 않도록 주의해야 한다.