LNNVL
구문
LNNVL(condition)
목적
LNNVL 함수는 조건식의 한 쪽 또는 양쪽 피연산자가 null일 수 있는 상황에서 조건식을 평가하는 간결한 방법을 제공합니다. 이 함수는 쿼리의 WHERE 절이나 검색된 CASE 표현식의 WHEN 조건으로 사용될 수 있습니다. 인자로 조건식을 받아들이며, 조건이 FALSE 또는 UNKNOWN이면 TRUE를 반환하고, 조건이 TRUE이면 FALSE를 반환합니다. LNNVL은 스칼라 표현식이 나타날 수 있는 모든 위치에서 사용할 수 있으며, 일반적으로 IS [NOT] NULL, AND, 또는 OR 조건이 필요하지만 null 가능성을 처리하기 위해 사용해야 할 때에도 사용할 수 있습니다.
Oracle Database는 때로 NOT IN 조건을 NOT EXISTS 조건으로 다시 작성하는 데 내부적으로 LNNVL 함수를 사용합니다. 이러한 경우 EXPLAIN PLAN의 출력에서 이 작업이 계획 테이블 출력에 표시됩니다. 조건식은 스칼라 값을 평가할 수 있지만, AND, OR, 또는 BETWEEN을 포함하는 복합 조건은 될 수 없습니다.
다음 표는 a = 2이고 b가 null인 경우 LNNVL이 반환하는 값을 보여줍니다.
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 |
예제
만약 20% 미만의 커미션 비율을 가진 직원 수를 파악하려 한다면, 커미션을 받지 않는 직원도 포함하여야 합니다. 다음 쿼리는 실제로 20% 미만의 커미션을 받는 직원들만을 반환합니다:
SELECT COUNT(*)
FROM employees
WHERE commission_pct < .2;
COUNT(*)
----------
11
아예 커미션을 받지 않는 72명의 직원도 포함하려면, 다음과 같이 LNNVL 함수를 사용하여 쿼리를 다시 작성할 수 있습니다:
SELECT COUNT(*)
FROM employees
WHERE LNNVL(commission_pct >= .2);
COUNT(*)
----------
83
출처: 오라클 레퍼런스
원문 링크: Oracle LNNVL 함수 문서
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] LOG - 로그값 반환 (0) | 2023.08.09 |
---|---|
[오라클 레퍼런스 함수] LOCALTIMESTAMP - TIMESTAMP WITH TIME ZONE 값 반환 (0) | 2023.08.09 |
[오라클 레퍼런스 함수] LN - 자연 로그 반환 (0) | 2023.08.09 |
[오라클 레퍼런스 함수] LISTAGG - 그룹 내 정렬 데이터의 컬럼 값 결합(연결) (0) | 2023.08.09 |
[오라클 레퍼런스 함수] LENGTH - 문자열 길이 반환 (0) | 2023.08.09 |
댓글