프로그래밍/SELECT

오라클 COALESCE와 NVL – 널값 처리의 차이점

오텍 2025. 4. 1. 06:00

📖 목차

    반응형

    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에서
    반응형