문법 |
목적 |
LNNVL함수는 조건의 한쪽 또는 양쪽 연산자가 NULL이 존재할 경우에, 조건문을 평가하기 위한
방법을 제공한다. 이 함수는 WHERE구문에서만 사용가능하다. 이 함수는 조건문을 인수로 가지고, 만약 조건문이 FALSE이거나 UNKNOWN
이라면 TRUE를 반환하고, 조건문이 TRUE라면 FALSE를 반환한다.LNNVL함수는 스칼라 표현이 사용될수 있는 곳이면 이용할수 있다. IS
[NOT] NULL,AND,OR,OR조건문이 있는 문장에서는 유효하지 않으나, 발생가능한 NULL값들을 처리하기 위해 사용가능하다.
오라클 데이터 베이스는 LNNVL함수를 내부적으로 NOT IN 조건문을 NOT EXISTS
조건문으로 변경하는 방법을 사용한다. 이 경우에, EXPLAIN PLAN으로부터 출력에 의해서, PLAN 테이블 출력에서 이 운영나타난다.
조건문은 임의의 스칼라 값에을 평가할수 있지만, AND,OR,BETWEEN을 포함한 복합 조건문을 사용할수 없다.
이 테이블은 a=2이고 b는 NULL인 경우에 LNNVL함수가 반환하는 값을 보여준다.
| 조 건 | 참 / 거짓 | LNNVL 반환 값 |
|---|---|---|
| a = 1 | FALSE |
TRUE |
| a = 2 | TRUE |
FALSE |
a IS NULL |
FALSE |
TRUE |
| b = 1 | UNKNOWN |
TRUE |
b IS NULL |
TRUE |
FALSE |
| a = b | UNKNOWN |
TRUE |
예제 |
수수료를 받지 않는 종업원을 포함하여, 20% 미만의 수수료를 받는 종업원을 알기를 원한다고
가정하자. 다음 쿼리는 단지 20%미만의 수수료를 받는 종업원을 반환한다.
SELECT COUNT(*) FROM employees WHERE commission_pct < .2;
COUNT(*)
----------
11
수수료를 받지 않는 72명을 포함하기 위해서, 다음과 같이 LNNVL함수를 이용하여 쿼리를 변경할수
있다.(수수료 NULL+수수료 20%미만)
SELECT COUNT(*) FROM employees WHERE LNNVL(commission_pct >= .2);
COUNT(*)
----------
83