DECODE = if/else 와 비슷한 기능을 수행한다.
실습 환경
Windows 10
Oracle 11g Express Edition Release 11
Oracle SQL Developer
Database ( hr ) - hr 테이블은 오라클에서 지원하는 테이블입니다.
DECODE 문법
DECODE(column , 조건1 , 결과1 , 조건2 , 결과2 , default)
DECODE는 지정한 column의 조건에 따라 결과를 출력해준다 / 둘다 조건에 맞지 않으면 default에 넣어준 값이 나온다.
DECODE 을 사용한 예제 1
SELECT JOB_ID , DECODE(JOB_ID , 'IT_PROG' , '아이티프록' , 'FI_ACCOUNT' , '에프아이어카운트' , '기타')
AS TEST_DECODE FROM employees;
JOB_ID 컬럼의 데이터가 IT_PROG 라면 아이티프록 / FI_ACCOUNT 라면 에프아이어카운트' / 둘다 아니라면 기타 값을 출력하게 해주는 예제이다.
DECODE 을 사용한 예제 2
SELECT JOB_ID , DECODE(JOB_ID , 'IT_PROG' , '아이티프록' , 'FI_ACCOUNT' , '에프아이어카운트')
AS TEST_DECODE FROM employees;
위 예제와 비슷하지만 default값을 지정해주지 않았다 그럴 경우는 default값이 null로 표기된다.
DECODE 을 사용한 예제 3
SELECT commission_pct , DECODE(commission_pct,NULL,'0000','9999')
AS DECODE_TEST FROM employees;
DECODE문법을 NVL2처럼 사용하는 코드이다.
지정한 컬럼의 데이터가 NULL이라면 결과1 / NULL이 아니라면 결과2 값이 나오게 된다.
DECODE 을 사용한 예제 4
SELECT salary , job_id , DECODE(salary , 24000 , DECODE(job_id , 'AD_PRES' , '아이티프록'),'알수없음')
AS TEST_DECODE FROM employees;
위 코드는 중첩 DECODE를 활용한 코드다.
코드를 살펴보면 salary 컬럼에서 24000을 기준을 잡는다 그리고 한번더 DECODE를 실행한다.
job_id가 AD_PRES 라면 아이티프록 이라고 출력하고
둘다 아닌경우 알수없음 이라고 표기하라고 되어있다.
DECODE 을 사용한 예제 5
SELECT salary , DECODE(salary , 9000 , salary * 100)
AS DECODE_TEST FROM employees;
위 코드는 결과 값에 연산처리 하도록 코드를 줬다
'DATABASE > ORACLE' 카테고리의 다른 글
Oracle - TRIM , LTRIM , RTRIM (0) | 2022.03.17 |
---|---|
Oracle - SUBSTR , SUBSTRB (0) | 2022.03.17 |
Oracle - NVL , NVL2 , COALESCE (0) | 2022.03.15 |
Oralce - TO_CHAR () (0) | 2022.03.14 |
Oralce - HAVING (0) | 2022.03.14 |