728x90
반응형
Oracle SQL - DECODE 함수란?
오라클 쿼리에서 가장 많이 사용하는 함수 중에 하나이자, 필자도 조건을 처리할 때 자주 사용하는 함수이다.
프로그래밍을 해본 사람은 조건문 if-else 문을 생각하면 이해가 쉬울 것이다.
그렇지 않은 사람을 위해 간단히 설명하자면 해당 칼럼이 A 이면 B 값을 출력하는 것이다.
DECODE(컬럼명, 조건 1, 결과 1, 조건 2, 결과 2...)
DECODE(T1.MAJOR, 'SW', '소프트웨어', 'PE', '체육', 'MU', '음악', '기타 과목')
해석
T1.MAJOR 칼럼이
'SW' 이면 -> '소프트웨어'
'PE'이면 -> '체육'
'MU'이면 -> '음악'
위 3가지에 어느 하나라도 해당하지 않으면 '기타 과목'이라고 조회한다.
사용 예제
WITH TEMP AS(
SELECT 'SW' MAJOR FROM DUAL UNION ALL
SELECT 'PE' MAJOR FROM DUAL UNION ALL
SELECT 'MU' MAJOR FROM DUAL UNION ALL
SELECT 'ETC' MAJOR FROM DUAL
)
WITH문은 일종의 임시 테이블을 만들 때 사용한다.
TEMP라는 변수 안에 괄호 안에 있는 내용을 구성한다.
DUAL은 오라클 자체에서 제공되는 테이블로, 간단하게 함수를 이용해 계산 결괏값을 확인할 때 사용되는 테이블이다.
TEMP는 각 과목들의 값들을 MAJOR라는 칼럼에 대입해주고 중복 없이 합집합 연산(UNION ALL)을 수행한다.
SELECT T1.MAJOR FROM TEMP T1;
TEMP를 확인해보자.
우리는 WITH 문과 DUAL 테이블로 하나의 임시 테이블을 만들었다.
자, 이제 DECODE 함수를 적용하여 과목 이름 칼럼을 조회해보자.
SELECT T1.MAJOR
, DECODE(T1.MAJOR, 'SW', '소프트웨어', 'PE', '체육', 'MU', '음악', '기타과목' ) MNAME
FROM TEMP T1
;
MNAME이라는 칼럼과 함께 조건에 맞는 값들이 조회되었음을 볼 수 있다.
요약
딱 이 사실만 알면 된다.
기준이 되는 칼럼이 조건 1이면 결과 1..
728x90
반응형
'SQL' 카테고리의 다른 글
Oracle SQL - Index Range Scan (0) | 2022.01.22 |
---|---|
Oracle SQL - Index Unique Scan (0) | 2022.01.20 |
[SQL] CREATE TABLE, INSERT, SELECT (2) | 2022.01.10 |
[SQL] Oracle Database 2 사용자 권한 부여하기 (0) | 2022.01.10 |
[SQL] Oracle Database 1 (0) | 2021.12.23 |