본문 바로가기
IT & 테크

(오라클) ORACLE 오라클 DECODE 다중 조건 : 사용예제 왕초보 따라하기!

by BlackD 2025. 2. 25.
반응형

1. 오라클 DECODE 함수란?

DECODE 함수는 IF-THEN-ELSE 문과 유사하게 특정 조건에 따라 값을 반환하는 오라클의 SQL 함수입니다.
단순한 CASE 문과 비슷하지만, 특정 값과 비교하여 결과를 반환하는 방식입니다.


2. DECODE 함수 기본 문법

DECODE(컬럼명 또는 표현식, 조건1, 결과1, 조건2, 결과2, ..., 기본값)
  • 컬럼명 또는 표현식: 비교할 대상
  • 조건1, 조건2: 비교할 값
  • 결과1, 결과2: 조건에 맞는 경우 반환할 값
  • 기본값: 위의 조건이 모두 만족하지 않을 경우 반환할 값 (생략 가능)

3.  DECODE 함수 단일 조건 예제

SELECT emp_name,
       DECODE(dept_no, 
              10, '인사팀',
              20, '개발팀',
              30, '영업팀',
              '기타부서') AS 부서명
FROM employees;

설명:

  • dept_no 값이 10이면 '인사팀', 20이면 '개발팀', 30이면 '영업팀'을 반환
  • 위의 값이 없으면 '기타부서'를 반환

4.  DECODE 다중 조건 활용 방법

반응형

DECODE는 단순 비교만 가능하기 때문에, 다중 조건이 필요한 경우 중첩하여 사용해야 합니다.

4.1.  중첩 활용 예제

SELECT emp_name,
       DECODE(dept_no, 
              10, DECODE(job, 'MANAGER', '인사팀-관리자', '인사팀-일반직'),
              20, DECODE(job, 'MANAGER', '개발팀-관리자', '개발팀-일반직'),
              '기타부서') AS 부서_직급
FROM employees;

설명:

  • dept_no10이면 job 값을 다시 DECODE하여 'MANAGER'이면 '인사팀-관리자', 아니면 '인사팀-일반직' 반환
  • dept_no20이면 job 값을 다시 DECODE하여 'MANAGER'이면 '개발팀-관리자', 아니면 '개발팀-일반직' 반환
  • 위의 값이 없으면 '기타부서' 반환

4.2. DECODE + 수식 활용

DECODE는 단순 비교뿐만 아니라 수식과 함께 사용할 수도 있습니다.

SELECT emp_name,
       salary,
       DECODE(
           SIGN(salary - 5000), 
           1, '고소득자',
           0, '적정수준',
          -1, '저소득자'
       ) AS 급여수준
FROM employees;

설명:

  • SIGN(salary - 5000) 함수는 급여가 5000보다 크면 1, 같으면 0, 작으면 -1 반환
  • DECODE를 사용하여 '고소득자', '적정수준', '저소득자'로 분류

5. DECODE vs  CASE 차이점

  • DECODE는 단순한 값 비교에 최적화
  • CASE논리 연산, 범위 비교도 가능

CASE를 활용한 다중 조건

SELECT emp_name,
       CASE 
           WHEN dept_no = 10 AND job = 'MANAGER' THEN '인사팀-관리자'
           WHEN dept_no = 10 THEN '인사팀-일반직'
           WHEN dept_no = 20 AND job = 'MANAGER' THEN '개발팀-관리자'
           WHEN dept_no = 20 THEN '개발팀-일반직'
           ELSE '기타부서'
       END AS 부서_직급
FROM employees;

→ 다중 조건을 사용할 경우 CASE가 더 직관적이고 가독성이 좋음!


6. 마무리

  • DECODE는 간단한 값 비교에 적합
  • 다중 조건이 필요한 경우 DECODE중첩해서 사용
  • 복잡한 조건이라면 CASE를 활용하는 것이 더 효율적

👉 감사 인사는 좋아요 & 지인에게 공유

반응형