IFNULL, NVL 함수

설명

IFNULL 함수와 NVL 함수는 유사하게 동작하며, NVL 함수는 집합형 데이터 타입을 추가로 지원한다. 두 개의 인자가 지정되며, 첫 번째 인자 expr1NULL이 아니면 expr1을 반환하고, NULL이면 두 번째 인자인 expr2를 반환한다. 각 함수가 결과로 반환하는 데이터 타입은 expr1expr2 타입에 따라 아래의 표와 같다.

expr1 타입

expr2 타입

NVL 번환 값 타입

IFNULL 반환 값 타입

?

?

에러

VARCHAR

?

X

X 타입

VARCHAR

CHAR

VARCHAR

VARCHAR

VARCHAR

CHAR

NCHAR

에러

VARCHAR

VARCHAR

NCHAR

VARCHAR

VARCHAR

문자열 타입

숫자 타입

에러

VARCHAR

문자열 타입

날짜/시간 타입

에러

VARCHAR

숫자 타입

날짜/시간 타입

에러

VARCHAR

날짜/시간 타입

날짜/시간 타입

공통으로 변환 가능한 타입

VARCHAR

숫자 타입

숫자 타입

공통으로 변환 가능한 타입

공통으로 변환 가능한 타입

집합형 타입

집합형 타입

공통으로 변환 가능한 타입

에러

집합형 타입

그 외 타입

에러

에러

구문

IFNULL( expr1, expr2 )

NVL( expr1, expr2

 

result :

expr1 | expr2

IFNULL(a, b) 또는 NVL(a, b)는 다음의 CASE 문장과 같은 의미를 가진다.

CASE WHEN a IS NULL THEN b

ELSE a

END

예제

SELECT * FROM case_tbl;

            a

=============

            1

            2

            3

         NULL

 

--returning a specific value when a is NULL

SELECT a, NVL(a, 10.0000) FROM case_tbl;

            a  nvl(a, 10.0000)

===================================

            1  1.0000

            2  2.0000

            3  3.0000

         NULL  10.0000

 

--IFNULL can be used instead of NVL and return values are converted to the string type

SELECT a, IFNULL(a, 'UNKNOWN') FROM case_tbl;

            a   ifnull(a, 'UNKNOWN')

===================================

            1  '1'

            2  '2'

            3  '3'

         NULL  'UNKNOWN'