[Oracle] 오라클 Decode 함수 사용 법
▣ Oracle/오라클 Decode 함수 사용 법
이번엔 오라클 쿼리 작성 시, 유용하게 사용할 수 있는 Decode 함수에 대해 알아 보겠습니다.
Decode 함수는 특정 값을 조건에 따라 다른 값으로 변환 해주는 함수 이며, IF THEN ELSE와 비슷하다고 볼 수 있습니다.
사용법은 아래와 같습니다.
→ DECODE (Value, CheckValue, True Return, False Return)
Value가 CheckValue와 일치하면 True Return값이 Return 되고, 불일치 하면 False Return값이 Return 됩니다.
예를 들면...
SELECT DECODE('A','A','TRUE','FALSE') FROM DUAL → 'TRUE'
SELECT DECODE('A','B','TRUE','FALSE') FROM DUAL → 'FALSE'
SELECT DECODE(1,1,'TRUE','FALSE') FROM DUAL → 'TRUE'
이렇게 됩니다.
만약 CheckValue를 여러개로 체크 하고 싶다면,
→ DECODE (Value, CheckValue1, True Return1, CheckValue2, True Return2,....... False Return)
이런식으로 해주시면 됩니다.
이것도 예를 들어보면.. 아래와 같습니다.
SELECT DECODE('A','B','TRUE1','A','TRUE2','FALSE') FROM DUAL → 'TRUE2'
SELECT DECODE('A','A','TRUE1','B','TRUE2','FALSE') FROM DUAL → 'TRUE1'
SELECT DECODE('A','C','TRUE1','B','TRUE2','FALSE') FROM DUAL → 'FALSE'
실제로 아래와 같이 사용할 수 있습니다.
SELECT DECODE(U.GRADE, 'S', '*****', 'A', '****', '***') FROM USER_GRADE U;
USER 등급 테이블을 Select 할 때, 만약 User 등급이 S이면 별 5개, A이면 별 4개 그 외에는 별 3개를 리턴 해주는 쿼리 입니다.
※ 주의
→ Decode 함수는 오라클에서만 지원을 하므로, 다른 DBMS 에서는 case when을 사용하시면 됩니다.