반응형
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_no
가10
이면job
값을 다시DECODE
하여'MANAGER'
이면'인사팀-관리자'
, 아니면'인사팀-일반직'
반환dept_no
가20
이면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
를 활용하는 것이 더 효율적
👉 감사 인사는 좋아요 & 지인에게 공유
반응형
'IT & 테크' 카테고리의 다른 글
(최신) SI 3년차 개발자 연봉 : 얼마나 받을까? (0) | 2025.02.27 |
---|---|
(최신) 11년차 개발자 연봉 : 얼마나 받을까? (0) | 2025.02.26 |
(최신) si 2년차 개발자 월단가 및 연봉 : 얼마나 받을까? (0) | 2025.02.25 |
(최신) 개발자가 AI로 대체될까 : 현실은 어려운 이유 (0) | 2025.02.24 |
(최신) 6년차 웹퍼블리셔 연봉 : 얼마나 받을까? (0) | 2025.02.24 |