(동영상)오라클 LNNVL 조건식, OR-확장

(동영상)오라클 LNNVL 조건식, OR-확장

 

매개변수로 들어오는 조건의 결과가 TRUE이면 FALSE를, FALSE나 UNKNOWN이면 TRUE를 반환한다.

 

[예1]

 

EMP 테이블에서 커미션이 1000 미만인 사원을 조회한다고 해보자.

 

-- EMP 테이블 전체 14건 중 COMM이 NULL인 것은 10건

SELECT ename, sal, comm FROM emp;

 

093eabd4a2884b0cc2e67be75bdb99e9_1595940
 

 

-- 3건 조회

SELECT * FROM emp

WHERE comm < 1000;

 

3명의 사원이 조회되었는데 COMM이 NULL인 사원도 COMM이 1000 미만 이라고 간주한다면

위 쿼리결과에는 조회되지 않는다. NULL인 사원까지 조회하려면 아래처럼 하면 되는데...

 

SELECT * FROM emp

WHERE  NVL(comm, 0) < 1000;

 

13건이 조회된다.

 

이것을 LNNVL 함수를  사용하면 된다.

 

-- 조건식이 comm < 1000 이 아니라 comm >= 1000으로 변경됨을 확인 

SELECT * FROM emp

WHERE  LNNVL(comm >= 1000);  -- COMM < 1000 이면서 NULL인 것 까지 포함

 

[예2]

-------------------------------------------------------------------

-- OR-확장

-- myemp1 테이블은 1000만건 정도

-------------------------------------------------------------------

select * from myemp1

where job='CLERK'

or ename like '김%';

 

아래 쿼리와 동일하다.

 

f58f1309993a9088ed9b72bd33aa799a_1595939
 

 

-------------------------------------------------------------------------------

-- job이 'CLERK'이고 ename이 '김'으로 시작하는 데이터를 합집합으로 구하는데

-- ename이 '김'으로 시작하는 데이터를 추출할 때 job='CLERK'인 데이터는 제외한다.

--------------------------------------------------------------------------------

select * from myemp1

where job='CLERK'

union all

select * from myemp1

where ename like '김%'

and LNNVL(job='CLERK');  -- job이 'CLERK'이면 false를 리턴, 즉 job이 CLERK이 아니거나 job is NULL인것을 선택한다.

 

Comments