All thing of the world!

Oracle NVL2 설명 : 오라클 함수 본문

IT/Oracle DBMS

Oracle NVL2 설명 : 오라클 함수

WorldSeeker 2021. 4. 5. 09:25

1. 함수의 목적

    Oracle NVL2는 파라미터 expr1이 not null이면 expr2를 출력하고, expr1이 null이면 expr3를 출력한다.
  ( CASE WHEN expr1 is not null THEN expr2 ELSE expr3 END와 같은 로직이다)

2. 샘플을 통한 개념 퀵뷰

SELECT last_name, salary,
NVL2(commission_pct, salary + (salary * commission_pct), salary) income
FROM employees
WHERE last_name like 'B%'
ORDER BY last_name;


3. 사용방법  


4. 함수 PARAMETER 설명

[expr1],[expr2],[expr3]
NVL2에 태울 데이터를 지정하는 입력 파라미터이다.
어떠한 데이터타입도 가능하나, expr2와 expr3는 LONG 데이터타입은 불가능한다.
expr2와 expr3의 데이터타입이 다르다면 한쪽의 데이터 타입으로 맞춘다.
같은 타입으로 만들 수 없다면 에러를 반환한다.


5. 다양한 샘플표현

example1) expr2와 expr3 파라미터의 데이터타입이 달라 동일한 데이터타입으로 변환할 수 없다면 에러가 발생한다. 아래의 경우 expr3의 'abc'를 숫자로 변경할 수 없어 에러가 발생한다.

select nvl2('1',123,'abc')
from dual;

ORA-01722: 수치가 부적합합니다
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.

Comments