▣ 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을 사용하시면 됩니다.
'데이터베이스 > Oracle' 카테고리의 다른 글
[Oracle] 오라클 시퀀스(Sequence) 생성 수정 삭제하기 (0) | 2015.08.10 |
---|---|
[Oracle] 오라클 에러 ORA-00904: invalid identifier / 부적합한 식별자 (0) | 2015.07.23 |
[Oracle] 오라클 테이블 컬럼 추가/수정/삭제/이름변경 하기(ALTER table ADD/MODIFY/DROP/RENAME) (0) | 2015.07.06 |
[Oracle] 오라클 Null값 변환/치환 NVL, NVL2 함수 사용 법 (0) | 2015.06.30 |
[Oracle 에러] ORA-30036: unable to extend segment by 8 in undo tablespace (0) | 2015.06.29 |