다른 명령
LNNVL
- 오라클 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은 잘못된 결과를 출력한다.