NULL 처리 함수 정리

TJK·2025년 8월 22일
0

NULL 처리 함수 정리

NULL 처리 함수는 NULL 값을 다른 값으로 치환하여 계산이나 결과에 NULL이 포함되지 않도록 하는 데 사용됩니다. SQLD 시험에서는 DBMS별 함수 차이와 함께 SUM 또는 AVG와 같은 집계 함수와 결합하여 출제되는 경우가 많습니다.


1. NULL 처리 함수 종류

함수DBMS형식기능
NVLOracleNVL(expr1, expr2)expr1NULL이면 expr2 반환.
ISNULLSQL ServerISNULL(expr1, expr2)expr1NULL이면 expr2 반환.
COALESCEANSI 표준COALESCE(expr1, expr2, ...)첫 번째 NULL이 아닌 값을 반환.

2. 시험 핵심 포인트

1. DBMS별 함수 구분 (★★★★★)

  • **NVL**은 Oracle 전용입니다. 두 개의 인자만 받으며, 인자들의 데이터 타입이 동일해야 합니다.
  • **ISNULL**은 SQL Server 전용입니다.
  • **COALESCE**는 ANSI 표준으로, 여러 개의 인자를 받을 수 있으며 가장 범용적입니다.

2. 집계 함수와의 결합 (★★★★★)

  • SUM, AVG 같은 집계 함수는 NULL 값을 계산에서 자동으로 제외합니다.
  • SELECT SUM(bonus) FROM Employees;
    • bonus 컬럼이 모두 NULL일 경우 결과는 **NULL**이 됩니다.
  • SELECT SUM(NVL(bonus, 0)) FROM Employees;
    • NULL 값을 0으로 치환하므로, NULL 대신 0이 합산되어 결과는 **0**이 됩니다.
  • 시험에서는 SUM(NVL(컬럼, 0))SUM(컬럼)의 결과 차이를 묻는 문제가 자주 출제됩니다.

3. CASE 문으로 대체 가능

  • NVL(salary, 0)CASE WHEN salary IS NULL THEN 0 ELSE salary END와 동일한 기능을 수행합니다. 이는 NULL 처리 함수의 원리를 이해하는 데 도움이 됩니다.

3. 암기 팁

  • NVL → **N**ull **V**alue **L**ogic → 오라클 전용!
  • COALESCE → **C**heck **O**n ALL the Stuff → 모든 인자를 확인!
  • SUM(NULL) = NULL! SUM(NVL(NULL, 0)) = 0!

4. 실전 기출 문제 스타일

1. 다음 중 Oracle 환경에서 salaryNULL인 경우 0으로 처리하려면 어떤 함수를 사용해야 하는가?
A. ISNULL
B. COALESCE
C. NVL
D. IFNULL

2. Employees 테이블의 bonus 컬럼 값이 모두 NULL일 때, 다음 쿼리들의 실행 결과로 올바른 조합은?

SELECT SUM(bonus) AS total_bonus, SUM(NVL(bonus, 0)) AS total_bonus_fixed FROM Employees;

A. NULL, 0
B. 0, NULL
C. NULL, NULL
D. 0, 0

3. 다음 중 COALESCE(col1, col2, 0)의 의미로 가장 알맞은 것은?
A. col1col2의 값을 더한 후 NULL이면 0을 반환한다.
B. col1NULL이 아니면 col1, 아니면 col2를 반환하고, col1col2 모두 NULL이면 0을 반환한다.
C. col1col2 중 더 큰 값을 반환하고, 모두 NULL이면 0을 반환한다.
D. col1, col2가 모두 NULL일 경우에만 0을 반환한다.

4. 다음 설명 중 틀린 것은?
A. NVL은 Oracle에서만 사용 가능한 함수다.
B. COALESCE는 여러 인자 중 첫 번째 NULL이 아닌 값을 반환한다.
C. SUM(NVL(col, 0))col이 모두 NULL일 경우 0을 반환한다.
D. SUM(col)NULL 값을 0으로 간주하여 합산한다.


정답 및 해설

  • 문제 1 정답: C
    • 해설: NVL은 Oracle 전용 NULL 처리 함수입니다.
  • 문제 2 정답: A
    • 해설: SUM(bonus)NULL을 계산하지 않으므로 결과가 NULL이 됩니다. SUM(NVL(bonus, 0))NULL0으로 치환하여 합산하므로 결과는 0이 됩니다.
  • 문제 3 정답: B
    • 해설: COALESCE는 왼쪽부터 순서대로 NULL이 아닌 첫 번째 값을 반환합니다.
  • 문제 4 정답: D
    • 해설: SUM 함수는 NULL 값을 0으로 간주하지 않고, 계산에서 제외합니다.
profile
Hello world!

0개의 댓글