Skip Headers

오라클 10g 함수
10g Release 1 (10.1)
Go to Documentation Home
HOME
Go to Book List
ORA_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
ORA_10G
Go to Feedback page
MAIL

Go to previous page
Previous
Go to next page
Next

LNNVL

문법

MAIN

lnnvl::=
Description of lnnvl.gif follows

그림 설명
 

목적

MAIN

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

예제

MAIN

수수료를 받지 않는 종업원을 포함하여, 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