📖 목차
반응형
SQL에서 NULL이 골치 아플 때 사용하는 두 가지 함수가 있습니다. 바로 COALESCE와 NVL. 둘 다 널값을 다른 값으로 바꾸기 위해 사용하는 함수입니다. 하지만 사용 방법이나 지원되는 DBMS, 그리고 동작 방식에서 차이가 있습니다.
1. NVL 함수란?
NVL은 Oracle에서 사용하는 함수입니다. 값이 NULL이면 두 번째 값으로 바꿔주는 함수입니다.
NVL(표현식, 대체값)
SELECT NVL(NULL, '대체값') FROM dual;
-- 결과: '대체값'
2. COALESCE 함수란?
COALESCE는 표준 SQL 함수로 대부분의 DBMS에서 사용 가능합니다. 여러 값을 차례대로 확인해서 NULL이 아닌 첫 번째 값을 반환합니다.
COALESCE(값1, 값2, 값3, ...)
SELECT COALESCE(NULL, NULL, '값3', '값4');
-- 결과: '값3'
3. NVL, COALESCE 의 차이점
항목 | NVL | COALESCE |
지원 DB | 오라클 전용 | 대부분 DB |
인자 수 | 2개만 가능 | 여러 개 가능 |
반환 타입 | 두 인자의 타입이 같아야 함 | 가장 일반적인 타입 반환 |
표준 여부 | 비표준 (오라클 전용 함수) | ANSI SQL 표준 함수 |
타입이 다를 때의 차이
-- NVL
SELECT NVL(100, '없음') FROM dual;
-- 오류 발생 (숫자와 문자열은 타입이 다름)
-- COALESCE
SELECT COALESCE(NULL, '없음', '대체') FROM dual;
-- 정상 실행 → '없음' 출력
4. 정리
- NVL - 오라클에서 간단히 NULL 대체
- COALESCE - 여러 개의 후보 중 첫 번째 NULL 아님을 찾고 싶을 때
- COALESCE 권장 - PostgreSQL, MySQL, SQL Server 등 다른 DBMS에서
반응형
'프로그래밍 > SELECT' 카테고리의 다른 글
SQL 실행 속도를 10배 줄이는 쿼리 튜닝 체크리스트 (0) | 2025.04.08 |
---|---|
NVL(SUM(A), 0) vs SUM(NVL(A, 0)) 차이 쉽게 정리 (0) | 2025.04.03 |
오라클 MERGE INTO – 한 번에 추가하고 수정하는 SQL 문 (0) | 2025.03.27 |
INSERT문에서 SELECT 사용하는 방법 (0) | 2025.03.25 |