"LNNVL 함수"의 두 판 사이의 차이
DB CAFE
(→LNNVL) |
(→LNNVL) |
||
8번째 줄: | 8번째 줄: | ||
** 컬럼이 NULL인 경우 = TRUE | ** 컬럼이 NULL인 경우 = TRUE | ||
** 함수 내부 조건이 FALSE인 경우 = TRUE | ** 함수 내부 조건이 FALSE인 경우 = TRUE | ||
− | |||
− | |||
}} | }} | ||
2023년 7월 6일 (목) 09:06 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
LNNVL[편집]
android “ logical not null value “
- LNNVL 함수는 해당 컬럼에 NULL이 존재할 경우 NULL 처리와 조건문을 한 번에 연산하기 위해서 사용
- LNNVL 함수는 아래의 상황일 때 조건이 TRUE이다.
- 컬럼이 NULL인 경우 = TRUE
- 함수 내부 조건이 FALSE인 경우 = TRUE
- 오라클 NULL 사용시 주의사항 정리
사용 예시 - 1
SELECT ename
, job
, comm
FROM emp
WHERE deptno = 30
AND LNNVL(comm = 0)
LNNVL(comm = 0)
- comm is null
- comm != 0
- 위의 2가지 조건을 한 번에 조건문을 선언한 것과 동일하다.
SELECT ename
, job
, comm
FROM emp
WHERE deptno = 30
AND (comm is null OR comm != 0)
- LNNVL(comm = 0)과 동일한 결과가 조회되는 것을 확인
- LNNVL 함수를 사용하는 이유는 해당 컬럼에 NULL이 존재할 경우 해당 NULL 데이터도 함께 조회되도록 하기 위해서
- LNNVL 함수 내부의 조건은 조회하려고 하는 조건의 반대 조건으로 부여하는 것을 기억해야 한다.
사용 예시 - 2
SELECT ename
, job
, comm
FROM emp
WHERE deptno = 30
AND LNNVL(comm > 300)
- LNNVL(comm > 300)
- - 커미션(comm)이 300 이하의 직원을 조회하는 쿼리이다.
아래의 조건과 동일한 결과이다.
- - comm is null OR comm <= 300
- - NVL(comm, 0) <= 300
SELECT ename
, job
, comm
FROM emp
WHERE deptno = 30
AND NVL(comm, 0) <= 300
- LNNVL(comm > 300) 조건과 NVL(comm, 0) <= 300 조건이 항상 동일한 결과라고 생각하면 안 된다.
- 위의 경우는 NULL이 300 이하라고 판단한 경우만 동일한 결과가 출력된다.
* 만약 comm이 300 이상인 직원과 comm이 NULL인 직원을 동시에 조회한다면 LNNVL(comm < 300) 이렇게 조건을 부여할 수 있으며, NVL(comm, 0) >= 300은 잘못된 결과를 출력한다.