728x90
반응형
오라클 DECODE 개념 및 사용예제 (if else - 디코드)
안녕하세요. 오늘은 오라클에서 빈번하게 사용하는 함수 중 하나인 DECODE 함수에 대해 포스팅하겠습니다.
DECODE는 프로그래밍의 if else 와 비슷한 기능을 수행합니다.
조건을 주는 방법은 대표적으로 CASE문 IF문이 있는데 이러한 조건문을 사용하면 쿼리문이 길어질 요소가 존재하기 때문에 우리는 오라클에서 조건이 동등문(==)일 경우에 간단하게 사용할 수 있는 DECODE라는 함수를 사용합니다.
💡 사용 문법
DECODE(컬럼, 조건1, 결과1, 조건2, 결과2, default_result)
위처럼 DECODE 함수는 첫번째 파라미터로 들어오는 칼럼을 기준으로 검사하고, 이 값이 조건1에 해당하면 결과1을 반환하고, 조건2에 해당하면 조건2를 반환합니다.
어느 조건에도 해당되지 않는다면 default_result를 반환하며, 이 것은 생략할 수 있고, 생략한다면 null을 반환합니다.
💡 사용 예제
-- gender 칼럼이 'M'이면 '남자', 'F',면 '여자', default는 '기타'
WITH temp AS (
SELECT 'M' gender FROM dual UNION ALL
SELECT 'F' gender FROM dual UNION ALL
SELECT 'X' gender FROM dual
)
SELECT gender
, DECODE(gender, 'M', '남자', 'F', '여자', '기타') gender2
FROM temp
-- TYPE이 'A' - 안드로이드 / 'I' - iOS / default - ETC
SELECT
DECODE(TYPE,'A','안드로이드','I','iOS','ETC') AS TYPE
FROM USER_PHONE
-- 주민등록번호(UNQ_NO)이(가) 1또는3으로 시작하면 남자 아니면 여자
SELECT
DECODE(SUBSTRING(UNQ_NO,0,1),1||3,'남','여') AS GENDER
FROM USER_INFO
좀 더 복잡하게 활용하면 DECODE와 SUM을 활용해 통계를 낼 수도 있습니다.
이상으로 oracle의 DECODE 함수에 대해 간단히 알아보았습니다.
감사합니당
728x90
반응형
'DB & SQL' 카테고리의 다른 글
[MariaDB] 윈도우 MariaDB 설치/접속 (1) | 2022.10.04 |
---|---|
[MySQL] 현재 데이터베이스 조회 및 변경 (0) | 2022.07.02 |
[Oracle] 중복 데이터 제거 (distinct, group by) (0) | 2021.07.31 |
[ORACLE] SELECT문 합치기 - UNION & UNION ALL 개념 및 사용법 (0) | 2021.07.07 |
SQL Error [1054] [42S22]: Unknown column 'SYSDATE' in 'field list' 해결 방법 (1) | 2021.04.27 |