일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- MYSQL
- switch
- spring form tag
- JSTL
- 문자열
- 전자정부 표준프레임워크
- checbox
- 한글
- json
- java
- 톰캣
- RADIO
- Oracle
- jquery
- html
- HTML5
- 오라클
- maven
- 네이버스마트 에디터
- 웹 플랫폼 설치 관리자
- php
- 날짜
- @RequestBody
- exception
- 이클립스
- DB
- SSL
- 호환성
- null
- 스크립트
- Today
- Total
개인적인 정리
Oracle LNNVL() 본문
오라클 LNNVL()
LNNVL()
- 조건이 UNKNOWN 이나 FALSE 이면 TRUE 를 return ??
- NOT IN 또는 NOT EXISTS 와 유사하면서 조금 다른 느낌정도 ?
- 예제를 봐야 이해가 된다.
- 사실 처음봐서 횡설 수설...
LNNVL(condition)
의 형태
LNNVL provides a concise way to evaluate a condition when one or both operands of the condition may be null. The function can be used in the WHERE clause of a query, or as the WHEN condition in a searched CASE expression. It takes as an argument a condition and returns TRUE if the condition is FALSE or UNKNOWN and FALSE if the condition is TRUE. LNNVL can be used anywhere a scalar expression can appear, when contexts where the IS [NOT] NULL, AND, or OR conditions are not valid but would otherwise be required to account for potential nulls.
Oracle Database sometimes uses the LNNVL function internally in this way to rewrite NOT IN conditions as NOT EXISTS conditions. In such case, output from EXPLAIN PLAN showw this operation in the plan table output. The condition can evaluate any scalar values but cannot be a compound condition containing AND, OR, or BETWEEN.
The table that follows shows what LNNVL returns given that a -2 and b is null.
Condition | Truth of Condition | LNNVL Return Value |
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 |
오라클 OE 계정으로 테스트 가능하다.
1)
SQL> SELECT COUNT(*) FROM employees;
--> 107
2)
SQL> SELECT COUNT(*)
FROM employees
WHERE commission_pct < .2 ;
--> 11
3)
SQL > SELECT COUNT(*)
FROM employees
WHERE commission_pct IS NULL ;
--> 72
4)
SQL>SELECT COUNT(*)
FROM employees
WHERE LNNVL(commission_pct >= .2) ;
--> 83
* 전체 107건 가운데 commission_pct >= .2 이 아닌 것을 구해준다.
그럼 commission_pct >= .2 이 아닌 것은 commission_pct < .2 인 것과 commission_pct IS NULL 인 것이 있을 것이다.
그것을 구해주는 용도로 사용할 수 있을 것 같다.
'DB > ORACLE' 카테고리의 다른 글
[Oracle] LPAD() (0) | 2020.04.08 |
---|---|
[Oracle] LOWER() (0) | 2020.04.08 |
[Oracle] LOG() (0) | 2020.04.08 |
Oracle LOCALTIMESTAMP() (0) | 2020.04.08 |
Oracle LN() (0) | 2020.04.08 |
Oracle LISTAGG() (0) | 2020.04.08 |
Oracle LENGTH() (0) | 2020.04.07 |
Oracle LEAD() (0) | 2020.04.07 |