본문 바로가기

개발/데이터베이스

[ORACLE] DECODE 함수, CASE WHEN 함수

반응형

DECODE 함수 사용법


▶ 사용방법
DECODE(칼럼명, 조건, 결과, 그 외)

예시
DECODE(ADDRESS, 'GD', '강동', 'GS', '강서', 'GN', '강남', 'GB', '강북', '기타')

위의 코드를 해석해보면 해당 테이블에 ADDRESS라는 칼럼의 값이 'GD'면 '강동'이라는 값을 리턴하고, 'GS'면 '강서'라는 값을, 'GN'이면 '강남'이라는 값을, 'GB'면 '강북'이라는 값을 리턴하고 앞의 조건에 해당하는 값이 없다면 '기타'라는 값을 리턴한다는 뜻이다.

예시 쿼리
아래의 쿼리는 TMP라는 테이블에 ADDRESS라는 칼럼이 있다는 가정하에 작성되었다.

SELECT ADDRESS, DECODE(ADDRESS, 'GD', '강동', 'GS', '강서', 'GN', '강남', 'GB', '강북', '기타') RESULT FROM TMP;


예시 쿼리 결괏값

ADDRESS RESULT
GD 강동
GS 강서
GN 강남
GB 강북
GW 기타

 


 

DECODE 대신 CASE WHEN 사용하기


사용방법
CASE 칼럼명 WHEN 조건 THEN 결과 ELSE 그 외 결과 END

예시
CASE ADDRESS WHEN 'GD' THEN '강동'
WHEN 'GS' THEN '강서'
WHEN 'GN' THEN '강남'
WHEN 'GB' THEN '강북'
ELSE '기타'
END

위의 코드는 DECODE와 같은 기능을 한다.
해당 테이블에 ADDRESS라는 칼럼의 값이 'GD'면 '강동'이라는 값을 리턴하고, 'GS'면 '강서'라는 값을, 'GN'이면 '강남'이라는 값을, 'GB'면 '강북'이라는 값을 리턴하고 앞의 조건에 해당하는 값이 없다면 '기타'라는 값을 리턴한다는 뜻이다.

예시 쿼리
아래의 쿼리는 TMP라는 테이블에 ADDRESS라는 칼럼이 있다는 가정하에 작성되었다.

SELECT ADDRESS, CASE WHEN ADDRESS = 'GD' THEN '강동' WHEN ADDRESS = 'GS' THEN '강서' WHEN ADDRESS = 'GN' THEN '강남' WHEN ADDRESS = 'GB' THEN '강북' ELSE '기타' END AS RESULT FROM TMP;


예시 쿼리 결괏값

ADDRESS RESULT
GD 강동
GS 강서
GN 강남
GB 강북
GW 기타

 


 

CASE WHEN과 DECODE 함께 사용하기


예시 쿼리
아래의 쿼리는 TMP라는 테이블에 ADDRESS1, ADDRESS2라는 칼럼이 있다는 가정하에 작성되었다.

SELECT ADDRESS1, ADDRESS2, CASE WHEN ADDRESS1 = 'GD' THEN DECODE(ADDRESS2, 'AS', '암사', 'CH', '천호', '기타') WHEN ADDRESS1 = 'GN' THEN DECODE(ADDRESS2, 'NH', '논현', '기타') ELSE '기타' END AS RESULT FROM TMP;


예시 쿼리 결괏값

ADDRESS1 ADDRESS2 RESULT
GD AS 암사
GD CH 천호
GD DC 기타
GN NH 논현
GS SS 기타



반응형