
데이터베이스를 다루다 보면 특정 컬럼 값이 존재하지 않는 경우가 있습니다.
오라클에서는 이러한 NULL 값을 처리하기 위해 IS NULL과 IS NOT NULL 조건을 제공합니다.
이번 글에서는 두 조건의 차이와 사용법을 정리해 보겠습니다.
1. 오라클에서 NULL의 의미
- **NULL은 "값이 없음"**을 의미합니다.
- 숫자 0이나 빈 문자열과는 다릅니다.
- 연산에 참여하면 결과도 NULL이 되는 특징이 있습니다.
SELECT 10 + NULL FROM dual; -- 결과: NULL
👉 따라서 NULL 여부를 직접 확인할 수 있는 전용 조건문이 필요합니다.
2. IS NULL 조건 사용법
IS NULL은 특정 컬럼 값이 NULL인 경우를 조회합니다.
SELECT ename, comm
FROM emp
WHERE comm IS NULL;
👉 위 예시는 comm 컬럼 값이 NULL인 직원만 출력합니다.
3. IS NOT NULL 조건 사용법
IS NOT NULL은 특정 컬럼 값이 NULL이 아닌 경우를 조회합니다.
SELECT ename, comm
FROM emp
WHERE comm IS NOT NULL;
👉 NULL이 아닌 모든 데이터를 조회할 때 유용합니다.
4. NULL 비교 시 주의할 점
자바나 다른 언어와 달리, 오라클에서는 NULL = NULL 비교가 항상 거짓(False)입니다.
SELECT *
FROM emp
WHERE comm = NULL; -- 결과 없음
👉 NULL 여부를 비교할 때는 반드시 IS NULL 또는 IS NOT NULL을 사용해야 합니다.
5. 실무에서 자주 쓰이는 예제
(1) 보너스를 받지 않은 직원 조회
SELECT ename
FROM emp
WHERE comm IS NULL OR comm = 0;
(2) 이메일 주소가 등록된 고객 조회
SELECT customer_id, email
FROM customers
WHERE email IS NOT NULL;
(3) NULL을 특정 값으로 대체하기 (NVL 함수 활용)
SELECT ename, NVL(comm, 0) AS comm_value
FROM emp;
👉 NULL 여부를 조건문으로 걸고, 필요 시 NVL, NVL2 같은 함수와 함께 사용하면 실무 활용도가 높습니다.
✅ 마무리
오라클에서 IS NULL과 IS NOT NULL은 NULL 값을 처리하는 핵심 조건문입니다.
- 값이 없는 데이터를 찾을 때는 IS NULL
- 값이 존재하는 데이터를 찾을 때는 IS NOT NULL
단순히 = NULL 비교를 사용할 수 없다는 점을 꼭 기억해야 합니다.
실무에서는 NVL 같은 함수와 함께 활용하면 더욱 효과적인 데이터 처리가 가능합니다.