문법 |
목적 |
NVL2함수를 사용하면, 지정한 표현이 NULL인지 여부에 근거하여 쿼리의 반환될 값을 판단할수
있다. 만약 expr1이 NULL이 아니라면, NVL2는 expr2를 반환한다. 만약 expr1인 NULL이라면, NVL2는 expr3을
반환한다.
인수 expr1은 임의의 데이터형을 가질수 있다. 인수 expr2와 expr3은 LONG이외의
임의의 데이터 형을 가질수 있다.
만약 expr2와 expr3의 데이터형이 다르다면,
만약 expr2가 문자 데이터형이라면, 오라클 데이터 베이스는 expr3이 NULL 상수가 아닌
한, 그것들을 비교하기 전에 expr3을 expr2의 데이터형으로 변환한다. expr3이 NULL상수인 경우에는, 데이터형 변환은 필요하지
않는다. 오라클은 expr2의 문자 세트에서 VARCHAR2를 반환한다.
만약 expr2가 수치인 경우에는, 오라클은 더 높은 수치 순위를 판단하여, 다른 인수의 데이터형을
암묵적으로 변환하여, 그 데이터형으로 반환한다.
예제 |
다음 예제는 employee테이블의 commission_pct 열이 NULL인지 여부에
의해서, 종업원의 수입이 급여와 수수료가 더해졌는지, 단지 급여로 구성되어 있는지 나타낸다.
SELECT last_name, salary, NVL2(commission_pct, salary + (salary * commission_pct), salary) income FROM employees WHERE last_name like 'B%' ORDER BY last_name; LAST_NAME SALARY INCOME ------------------------- ---------- ---------- Baer 10000 10000 Baida 2900 2900 Banda 6200 6882 Bates 7300 8468 Bell 4000 4000 Bernstein 9500 11970 Bissot 3300 3300 Bloom 10000 12100 Bull 4100 4100