작성일자 : 2023-11-11
Ver 0.1.1
1. Intro
Oracle에서 쿼리를 작성할 때, Tableau에서 계산식을 작성할때 잘 작성한 쿼리와 식은 식을 간단하게 작성했을 때이다.
2줄로 작성하던 식을 함수를 이용해 1줄로 줄일 수 있다면, 함수에 대한 이해가 있다는 전제가 필요하지만 식이 더 간단해질 수 있다.
Oracle에서 이렇게 간단하게 쿼리를 작성할 수 있게 도와주는 함수 중 하나는 바로 LNNVL이다.
LNNVL 함수는 1) 해당 컬럼에 NULL이 존재할 경우 NULL 처리와 2) 조건문을 한 번에 처리하고자 할때 사용한다.
- 컬럼이 NULL인 경우 OR 함수 내부 조건이 FALSE인 경우
SQL Language Reference
docs.oracle.com
2. How to
Intro에서 언급한 조건을 가지고 EMP에 적용해 보면 아래와 같다.
COMM 컬럼이 NULL 이면서 1000 이하인 조건을 적용하고 싶으면 아래 처럼 OR 조건으로 작성할 수 있다.
SELECT *
FROM SCOTT.EMP
WHERE DEPTNO = 30
AND (COMM IS NULL OR COMM <= 1000)
COMM 조건을 OR로 적용한것 처럼 이런 경우에 LNNVL 함수를 적용할 수 있다.
LNNVL(COMM > 1000) 조건을 적용하면 위 두가지 조건을 모두 충족하는 조건을 적용시킬 수 있다.
아래 쿼리를 작성하면 결과는 위 쿼리와 같다.
SELECT *
FROM SCOTT.EMP
WHERE DEPTNO = 30
AND LNNVL (COMM > 1000)
3. Wrap up
WHERE 구문에 조건을 지정하고자 할 때 NULL이면서 특정 조건을 OR 조건으로 충족시키고자 할 때, 두가지 조건을 적는 것 대신에 LNNVL 함수를 통해 한 구문으로 작성할 수 있다.
업무를 할때 이러한 유용한 구문들에 대한 지식들과 적용 사례 많아진다면, 좀 더 간단하고 좋은 쿼리를 작성할 수 있을 것이다.