본문 바로가기
SQL

SQL 강의 SQLP SQLD 기출 문제 - 007 ( NULL 체크 함수 )

by SQL Master 2022. 10. 10.
반응형

SQL를 다루는 입장에서 가장 중요한 부분이 NULL 값에 대한 처리입니다.

NULL 값이 포함되면 집계 함수(SUM, AVG)나 EXISTS 구문 등 동일한 SQL인데도 값이 다르게 리턴됩니다.

이번 문제는 NULL 값을 치환할 수 있는 함수에 대해서 풀어보겠습니다.

 

문제

아래 SQL의 결과값이 다른 것은?

[TABLE_A]

COL1 COL2
10 0
10 20
NULL 10
10 10
[예문]
SELECT NVL( COL1, COL2 ) AS EX1
     , NVL2( COL1, COL1, COL2 ) AS EX2
     , NULLIF( COL1, COL2 ) AS EX3
     , COALESCE( COL1, COL2 ) AS EX4
  FROM TABLE_A
  
 1. EX1
 2. EX2
 3. EX3
 4. EX4

 

 


 

문제풀이

  • 각 함수의 사용 방법을 알아야 합니다.

NVL, NVL2, COALESCE

  • NULL 값을 다른 값으로 변경
  • NVL( expr1, expr2 ) : expr1 값이 null 일 경우 expr2 값으로 변경, null이 아니면 expr1 값 리턴
  • NVL2( expr, expr1, expr2 ) : expr이 null이 아닐 경우 expr1, null일 경우 expr2 리턴
  • COALESCE( expr1, expr2, expr3 ) : expr1이 null이 아니면 expr1 값 리턴, null이면 coalesce(expr2, expr3) 리턴
COL1  COL2
10    0
10    20
NULL  10
10    10

SELECT NVL( COL1, COL2 ) AS EX1
     , NVL2( COL1, COL1, COL2 ) AS EX2
     , COALESCE( COL1, COL2 ) AS EX4

1,2,4번은 COL1이 NULL이 아니므로, COL1을 리턴
3번은 COL1이 NULL이므로 COL2를 리턴

결과는 
10
10
10
10

 

 

NULLIF

  • NULLIF( expr1, expr2 ) : exp1값과 exp2값이 동일하면 null 아니면 exp1를 리턴
COL1  COL2
10    0
10    20
NULL  10
10    10

SELECT NULLIF( COL1, COL2 ) AS EX3
  FROM TABLE_A
 
1, 2, 3번은 COL1과 COL2값이 달라서 COL1 리턴 
3번은 값이 같아서 NULL 리턴

결과는 
10
10
NULL
NULL

 

 

 

오늘은 NULL체크하는 방식에 대해서 알아봤습니다~

추가적인 궁금증은 댓글로 달아주세요!! :)

 

반응형

댓글