안녕하세요. 오늘은 오라클(Oracle) case when에 대해서 알아보겠습니다.
오라클(Oracle) case when은 쉽게 말해서 자바의 if else 문과 같다고 생각하시면 됩니다.
오라클(Oracle)에 if 처럼 사용할 수 있는 DECODE라는 함수가 존재 하지만 조건이 복잡해지면 사용하기도 어렵고 가독성이 떨어집니다.
일단 오라클(Oracle) DECODE라는 함수는 지난번에 설명 한번 드렸습니다.
https://nazzang19.tistory.com/11
여기로 가시면 참고 가능하십니다.
오늘은 오라클(Oracle)의 if문 DECODE함수와 다른 case when에 대해 설명합니다.
@ 오라클(Oracle) case when 사용법
CASE WHEN 조건1 THEN 조건1의 결과1
WHEN 조건2 THEN 조건2의 결과2
WHEN 조건3 THEN 조건3의 결과3
ELSE 모든 조건 불만족 결과4
END AS 컬럼명;
위와 같은 문법으로 사용하시면 됩니다.
바로 예시로 넘어 가보겠습니다.
@ 오라클(Oracle) case when 예시
WITH TEMP_USER AS (
SELECT 1 AS SEQ, 'a' AS ID, '홍길동' AS NAME, 32 AS AGE, 1 AS SEX_CD FROM DUAL UNION ALL
SELECT 2 AS SEQ, 'b', '홍길순', 62, 2 FROM DUAL UNION ALL
SELECT 3 AS SEQ, 'c', '김철수', 52, 1 FROM DUAL UNION ALL
SELECT 4 AS SEQ, 'd', '김영희', 45, 2 FROM DUAL UNION ALL
SELECT 5 AS SEQ, 'e', '강철진', 17, 1 FROM DUAL UNION ALL
SELECT 6 AS SEQ, 'f', '권용태', 26, 1 FROM DUAL UNION ALL
SELECT 7 AS SEQ, 'g', '김지은', 24, 2 FROM DUAL UNION ALL
SELECT 8 AS SEQ, 'h', '서석대', 28, 1 FROM DUAL UNION ALL
SELECT 9 AS SEQ, 'i', '김진민', 18, 2 FROM DUAL UNION ALL
SELECT 10 AS SEQ, 'j', '나호철', 9, 0 FROM DUAL
)
SELECT SEQ
, ID
, NAME
, AGE
, SEX_CD
, CASE WHEN SEX_CD = '1' THEN '남자'
WHEN SEX_CD = '2' THEN '여자'
ELSE '성별 판독 불가'
END AS SEX_NM
FROM TEMP_USER;
오라클(Oracle) WITH절로 TEMP_USER이라는 임시테이블을 만들고 임시데이터를 만들고 예시를 만들어 보았습니다.
오라클(Oracle) WITH절도 저번에 한번 설명 드렸었습니다.
모르시는 분들은 참고 하시면 될 것 같습니다.
위의 오라클(Oracle) case when 문 예시를 보면 SEX_CD라는 컬림이 1이면 '남자' 를
2이면 '여자'를 둘다 아니면 성별 판독 불가라는 결과를 리턴하게 작성해보았습니다.
위의 오라클(Oracle) case when 예시의 결과 값입니다.
SEX_NM이라는 컬럼에 예상대로 결과가 리턴되었습니다.
이상 오늘은 오라클(Oracle) case when에 대해서 알아보았습니다.
'개발 > Oracle' 카테고리의 다른 글
오라클(Oracle) DBMS_RANDOM 랜덤 정렬(order by) 로또 번호 생성 추출 쿼리 (64) | 2023.03.05 |
---|---|
오라클(Oracle) INSTR 함수 사용법 및 문법 설명 및 예시 (75) | 2023.02.19 |
오라클(Oracle)과 PostgreSQL의 차이점 (22) | 2023.01.30 |
[Oracle] 오라클 WITH 절 사용법 임시테이블 (38) | 2023.01.27 |
[Oracle] 오라클 문자열 합치기(CONCAT, ||) (23) | 2023.01.20 |