Oracle NVL2 설명 : 오라클 함수
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.