본문 바로가기
Database

[ORACLE] LNNVL() 함수 활용 예제 모음과 실무 적용 법

by Engineer J 2025. 6. 7.

오라클 LNNVL() 함수 활용 예제 모음과 실무 적용법
[Oracle] LNNVL

 

 

Oracle SQL을 다루는 개발자라면 반드시 알아야 할 고급 함수 중 하나가 LNNVL 함수입니다. 이 함수는 일반적인 조건문으로 처리하기 어려운 NULL 값 비교 문제를 해결하는 데 매우 유용합니다. 본 글에서는 ORACLE LNNVL 함수의 정의, 사용법, 예제, 유사 함수와의 비교 등을 통해 실무에서 바로 활용할 수 있도록 정리하였습니다.

LNNVL 함수란?

LNNVL(condition)은 condition의 결과가 FALSE 또는 UNKNOWN(NULL) 일 경우 TRUE를 반환하고, condition이 TRUE일 경우 FALSE를 반환하는 Oracle SQL 함수입니다.

문법

LNNVL(condition)

※ condition은 Boolean 조건식입니다.

용도

  • NULL이 포함된 칼럼의 값을 비교할 때 유용
  • WHERE 절에서 복잡한 조건문을 단순하게 처리할 수 있음
  • 일반적인 비교 연산자(>, =, <)로는 처리하기 어려운 조건을 해결

LNNVL 함수 사용 예제

1. 기본 사용 예


-- 예제 테이블
CREATE TABLE employees (
  id NUMBER,
  salary NUMBER
);

-- 데이터 입력
INSERT INTO employees VALUES (1, 5000);
INSERT INTO employees VALUES (2, NULL);
INSERT INTO employees VALUES (3, 3000);

-- salary가 4000보다 작거나 NULL인 데이터를 조회
SELECT *
FROM employees
WHERE LNNVL(salary >= 4000);
  

설명: salary가 4000보다 작거나 NULL인 데이터만 필터링됩니다. 일반적인 비교 연산자만 사용할 경우 NULL은 무시되지만, LNNVL을 사용하면 의도대로 처리할 수 있습니다.

2. LNNVL을 활용한 조건 분기


-- 직원 급여가 NULL이거나 기준 이하인 경우 특정 작업 수행
SELECT id,
       CASE
         WHEN LNNVL(salary >= 4000) THEN '조치 필요'
         ELSE '정상'
       END AS status
FROM employees;
  

다른 NULL 관련 함수와의 비교

함수명 설명 NULL 처리 방식 주요 사용처
LNNVL FALSE 또는 NULL 조건을 TRUE로 반환 조건 자체를 부정적으로 평가 WHERE 절의 NULL 조건 판단
NVL NULL 값을 다른 값으로 대체 대체값 제공 출력값 대체
COALESCE 여러 인수 중 첫 번째 NOT NULL 값 반환 여러 값 중 우선순위 지정 우선순위 대체
NULLIF 두 인수가 같으면 NULL 반환 비교용 조건 비교

LNNVL 함수 사용 시 주의사항

  • WHERE 절에서만 사용할 수 있으며, SELECT 절에서는 직접 사용할 수 없습니다.
  • BOOLEAN 결과가 아닌 조건식은 오류를 발생시킵니다.
  • 실제로는 조건을 부정하는 용도로 사용하는 것이기 때문에 명확한 조건의 이해가 필요합니다.

실무 적용 팁

LNNVL은 다음과 같은 상황에서 유용합니다.

  • NULL 여부에 따라 조건 분기해야 할 때
  • 인덱스를 고려해 NULL-safe 조건 필터링이 필요할 때
  • 통계 쿼리나 데이터 품질 검증 시 누락된 데이터 포함 여부를 정확히 파악할 때

결론

LNNVL 함수는 Oracle SQL에서 흔히 간과되지만, NULL 처리에 있어 매우 강력한 도구입니다. 특히 WHERE 절에서 조건식이 NULL일 가능성이 있는 경우 이를 명시적으로 처리함으로써 예기치 않은 결과를 방지할 수 있습니다. 실무에서 다양한 조건 필터링을 정확하게 수행하려면, 이 함수의 활용법을 반드시 숙지해 두는 것이 좋습니다.

출처

  • Oracle Database SQL Language Reference - LNNVL (Oracle 공식 문서)
  • Oracle LiveSQL 예제 자료: https://livesql.oracle.com/
  • 실무 경험 기반 쿼리 테스트 사례