반응형
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;
- 위 쿼리는 employees 테이블에서
- salary가 NULL이면 0으로, 아니면 실제 값을 출력합니다.
- 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 |