더북(TheBook)

① 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이 아니면 ‘급여 + (급여 * 커미션)’을 조회하고 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.