더북(TheBook)

③ LNNVL(조건식)

LNNVL은 매개변수로 들어오는 조건식의 결과가 FALSE나 UNKNOWN이면 TRUE를, TRUE이면 FALSE를 반환한다. 예를 들어, 커미션이 0.2 이하인 사원을 조회한다고 해보자.

입력

    SELECT employee_id, commission_pct
      FROM employees
     WHERE commission_pct < 0.2;

결과

    EMPLOYEE_ID     COMMISSION_PCT
    --------------- ---------------
            155              0.15
            163              0.15
            164               0.1
            165               0.1
            166               0.1
            167               0.1
            171              0.15
            172              0.15
            173               0.1
            178              0.15
            179               0.1

    11개의 행이 선택됨.

총 11명의 사원이 조회되었다. 그런데 커미션이 NULL인 사원도 0.2이하라고 봐야 하는데 위 쿼리결과에는 조회되지 않았다. NULL인 사원까지 조회하려면 어떻게 해야 할까? 앞에서 학습한 NVL 함수를 써서 커미션이 NULL인 사원은 0을 반환하도록 하면 구할 수 있다.

입력

    SELECT COUNT(*)
      FROM employees
     WHERE NVL(commission_pct, 0) < 0.2;

결과

    COUNT(*)
    ---------------
            83

또한 LNNVL 함수를 써서도 동일한 결과가 출력되도록 구현할 수 있다.

입력

    SELECT COUNT(*)
      FROM employees
     WHERE LNNVL(commission_pct >= 0.2) ;

결과

    COUNT(*)
    ---------------
            83

주의할 점은 LNNVL 함수는 매개변수로 들어오는 조건의 결과가 TRUE이면 FALSE를, FALSE나 UNKNOWN이면 TRUE를 반환하므로, 조건식을 ‘commission_pct< 0.2’가 아닌 ‘commission_pct>= 0.2’로 바꿨음을 유념하자.

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