① NVL(expr1, expr2), NVL2((expr1, expr2, expr3)
NVL 함수는 expr1이 NULL일 때 expr2를 반환한다.
입력
SELECT NVL(manager_id, employee_id)
FROM employees
WHERE manager_id IS NULL;
결과
NVL(MANAGER_ID,EMPLOYEE_ID)
------------------------------
100
위 문장은 manager_id가 NULL인 사원을 조회했는데, manager_id가 NULL일 때manager_id 대신 사번(employee_id)을 조회하는 쿼리다.
NVL2는 NVL을 확장한 함수로 expr1이 NULL이 아니면 expr2를, NULL이면 expr3를 반환하는 함수다.
입력
SELECT employee_id,
NVL2(commission_pct, salary + (salary * commission_pct), salary) AS salary2
FROM employees;
결과
EMPLOYEE_ID SALARY2
----------------- --------
198 2600
199 2600
200 4400
201 13000
202 6000
203 6500
...
107개의 행이 선택됨.
앞의 쿼리는 커미션(commission_pct)이 NULL인 사원은 그냥 급여를, NULL이 아니면 ‘급여 + (급여 * 커미션)’을 조회하고 있다.