본문 바로가기

db/oracle

nvl 함수와 nvl2 함수의 차이점

반응형

nvl과 nvl2의  차이점

NVL 함수와 NVL2 함수의 차이점
  • 오라클 데이터베이스에서 NULL 값을 처리하는 데 자주 사용되는 NVL 함수와 NVL2 함수는 비슷해 보이지만, 각기 다른 용도와 특징을 가지고 있습니다.
NVL 함수
  • 기능 : NULL 값을 다른 값으로 대체합니다.
  • 형식 : NVL(컬럼명, 대체값)
예시
SELECT NVL(salary, 0) AS salary_with_zero
FROM employees;

 

※ 위 예시에서는 salary가 NULL인 경우 0으로 대체되어 출력됩니다.

NVL2 함수
  • 기능 : 컬럼 값이 NULL인지 아닌지에 따라 다른 값을 반환합니다.
  • 형식 : NVL2(컬럼명, NULL이 아닐 때 값, NULL일 때 값)
예시
SELECT NVL2(commission, '있음', '없음') AS commission_yn
FROM employees;

 

위 예시에서는 commission이 NULL이 아니면 '있음', NULL이면 '없음'으로 출력됩니다.

두 함수의 차이점 요약
함수 설명 예시
NVL NULL 값을 무조건 다른 값으로 대체  NVL(salary, 0)
NVL2 컬럼 값이 NULL인지 아닌지에 따라 다른 값을 반환  NVL2(commission, '있음', '없음')
언제 어떤 함수를 사용해야 할까요?

 

1. NVL

  • NULL 값을 단순히 다른 값으로 바꾸고 싶을 때
  • 계산에 사용하기 위해 NULL 값을 0이나 다른 값으로 대체하고 싶을 때

2. NVL2

  • NULL 값 여부에 따라 다른 처리를 하고 싶을 때
  • 조건에 따라 다른 값을 반환해야 할 때
예시를 통한 이해
SELECT employee_id,
       salary,
       commission,
       NVL(salary, 0) AS salary_with_zero,
       NVL2(commission, '있음', '없음') AS commission_yn
FROM employees;
  1. 위 쿼리는 employees 테이블에서
  2. salary가 NULL이면 0으로, 아니면 실제 값을 출력합니다.
  3. commission이 NULL이면 '없음', 아니면 '있음'으로 출력합니다.
추가 설명
  • NVL2는 DECODE 함수와 유사한 기능을 하지만, 더 간결하고 직관적인 표현이 가능합니다.
  • NULL 값 처리 외에도, NVL과 NVL2는 CASE WHEN 문과 함께 사용하여 더 복잡한 조건 처리를 할 수 있습니다.

※ 결론적으로, NVL과 NVL2 함수는 NULL 값을 다루는 다양한 상황에서 유용하게 활용될 수 있습니다. 각 함수의 특징을 잘 이해하고, 적절한 함수를 선택하여 사용하면 효율적인 SQL 쿼리를 작성할 수 있습니다.






반응형

'db > oracle' 카테고리의 다른 글

oracle round 함수  (0) 2025.02.09
oracle floor 함수  (0) 2025.02.08
오라클 DECODE 함수와 NULL 값 처리  (0) 2025.01.23
oracle case when  (0) 2025.01.23
오라클 decode 부등호  (0) 2025.01.22