db/oracle
오라클 decode 다중조건
strange-dev
2025. 1. 21. 23:12
반응형
oracle decode 다중조건
오라클 DECODE 함수의 다중 조건 활용
- DECODE 함수는 하나의 컬럼 값을 여러 값과 비교하여 각 조건에 맞는 값을 반환하는 유용한 함수입니다. 특히 다중 조건을 사용하여 복잡한 논리를 구현할 수 있다는 점이 큰 장점입니다.
다중 조건 사용 방법
- DECODE 함수 내에서 여러 개의 DECODE 함수를 중첩하여 사용하면 다중 조건을 만들 수 있습니다.
DECODE(컬럼, 비교값1, DECODE(내부컬럼, 내부비교값1, 내부반환값1, ...),
비교값2, 반환값2,
...,
기본값)
- 외부 DECODE : 가장 바깥쪽의 DECODE 함수로, 첫 번째 조건을 검사합니다.
- 내부 DECODE : 외부 DECODE의 조건이 참일 때 실행되는 DECODE 함수로, 내부 조건을 검사합니다.
예시
- 부서별, 급여 등급별 보너스 지급
SELECT deptno, sal,
DECODE(deptno, 10, DECODE(sal, 2000, 100, 3000, 200, 0),
20, DECODE(sal, 2500, 150, 3500, 250, 0),
0) AS bonus
FROM emp;
※ 위 쿼리는 부서번호가 10이고 급여가 2000 이상이면 100, 3000 이상이면 200, 그 외에는 0의 보너스를 지급합니다. 부서번호가 20인 경우에도 비슷한 논리가 적용됩니다.
주의 사항
- 중첩 깊이 : 너무 많은 중첩은 코드 가독성을 저하시킬 수 있습니다. 가능하면 CASE WHEN THEN ELSE END 문을 사용하여 코드를 간결하게 만들 수 있습니다.
- 성능 : 복잡한 다중 조건은 쿼리 성능에 영향을 줄 수 있습니다. 인덱스를 적절히 활용하여 성능을 향상할 수 있습니다.
CASE WHEN THEN ELSE END 와의 비교
- DECODE : 간단한 조건 비교에 유용하며, 중첩을 통해 다중 조건을 구현할 수 있습니다.
- CASE WHEN THEN ELSE END : 더 복잡한 논리 연산이나 다양한 조건을 처리하는 데 유리하며, 가독성이 좋습니다.
※ DECODE 함수는 다중 조건을 처리하는 강력한 도구이지만, 과도한 중첩은 코드를 복잡하게 만들 수 있습니다. CASE WHEN THEN ELSE END 문과 함께 사용하여 최적의 쿼리를 작성하는 것이 좋습니다.
반응형