포스팅 목차
o LNNVL
문법
lnnvl::=
목적
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 |
참고
관련 함수
함수명 | 함수내용 |
COALESCE | 나열된 인수의 값을 순차적으로 체크하여 NULL이 아닌 첫 번째 인수를 반환한다. |
LNNVL | 조건문의 한쪽 또는 양쪽의 피연산자가 NULL이 존재하는 관측치를 포함하여 조건문을 평가하기 위한 방법을 제공한다. |
NANVL |
만약 n2가 NaN이 아니라면, 오라클은 n2를 반환한다. 만약 입력 값 n2가 Nan(숫치가 아닌)인 경우에 대체 값 n1을 반환하도록 오라클에 지시한다. |
NULLIF |
expr1과 expr2를 비교하는 비교 함수이다. 만약 expr1과 expr2가 같으면 NULL값을 반환하고, expr1과 expr2가 서로 동일하지 않으면 expr1을 반환한다. |
NVL | 쿼리의 결과에서 NULL(공백으로 반환) 값을 치환하는 함수이다. 만약 expr1이 NULL이면 expr2를 반환하고, 만약 expr1이 NULL이 아니면 expr1을 반환한다. |
NVL2 | NVL2함수를 사용하면, 지정한 표현이 NULL인지 여부에 근거하여 쿼리의 반환될 값을 분기하여 처리할 수 있다. |
예제
수수료를 받지 않는 종업원을 포함하여, 20% 미만의 수수료를 받는 종업원을 알기를 원한다고 가정하자. 다음 쿼리는 단지 20% 미만의 수수료를 받는 종업원을 반환한다.
Oracle Program |
SELECT COUNT(*)
FROM employees
WHERE commission_pct < .2;
Results |
COUNT(*)
----------
11
수수료를 받지 않는 72명을 포함하기 위해서, 다음과 같이 LNNVL함수를 이용하여 쿼리를 변경할 수 있다.(수수료 NULL+수수료 20% 미만)
Oracle Program |
SELECT COUNT(*)
FROM employees
WHERE LNNVL(commission_pct >= .2);
Results |
COUNT(*)
----------
83
오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 |
'오라클 게시판 > 오라클 함수' 카테고리의 다른 글
【오라클 함수】 LOG 함수 (0) | 2018.11.27 |
---|---|
【오라클(Oracle) SQL 함수】 LOCALTIMESTAMP 함수 (0) | 2018.11.27 |
【오라클(Oracle) SQL 함수】 LN 함수 (0) | 2018.11.26 |
【오라클(Oracle) SQL 함수】 LENGTH 함수 (문자열 길이) (0) | 2018.11.26 |
【오라클(Oracle) SQL 함수】 LEAST 함수 (0) | 2018.11.26 |
댓글