본문 바로가기
SQL/Oracle

오라클 DECODE 사용방법 및 예제

by wakestand 2019. 10. 17.
반응형

오라클에서 DECODE는

값을 가지고 설정한 값과 비교해 맞으면 그 값이 나오게 되고

조건에 맞지 않을 시에도 값을 설정해 그 값이 나오게 할 수 있는데

 

프로그래밍 언어에서 유사한 부분을 꼽아보자면

if ~ else if ~ else 를 생각하면 이해가 바로 될 것이다

 

DECODE는 아래 코드처럼 사용하면 되는데

 

ORACLE DECODE 사용 시

DECODE('값','조건1','조건 1일시 값') -- 여기까지가 최소 필요
  FROM TABLE;
  
DECODE('값','조건1','조건 1일시 값','조건2','조건 2일시 값', '조건에 맞는 값이 없을 시') AS DECODE_TEST_COLUMN2
  FROM TABLE; -- 조건은 계속 추가 가능

 

이런 식으로 사용하는데 최소 필요한 부분은

상단의 DECODE('값', '조건', '조건 1일시 값') 부분인데

 

받아올 값과,  조건 하나, 조건에 맞을 시 나올 값이 필요하다

 

조건은 ,'조건3', '조건 3일시 값' 이런 식으로 계속 추가 가능하고

조건에 맞는 값이 없을 시 나올 값도 꼭 넣지 않아도 된다

 

실 사용 예제는 이런 식으로 사용하게 되는데

아래에서는 테이블을 DUAL을 사용해서 'Cattle' 이라는 고정값을 줬지만

실 사용시에는 저 위치에 컬럼을 넣게 될 것이다

 

SELECT DECODE('Cattle','Cattle','음메','Pig','꿀꿀','else') SAY FROM DUAL

-- SELECT 시 --
SAY
음메

 

보면 들어오는 값이 Cattle인데

여기서 이 값이 Cattle일 경우에는 '음메' 가 나오고

Pig일 경우에는 '꿀꿀'이 나오고

 

Cattle도 Pig도 아닐 경우에는 'else' 가 나오게 된다

 

DECODE 문으로 아래 예제처럼 NULL 처리도 가능하기는 하지만

 

SELECT DECODE('',NULL,'NULL입니다') SAY FROM DUAL

-- 출력 시 -- 
SAY
NULL입니다

 

NVL을 사용하는 것이 맞기 때문에

DECODE를 쓰지 말고 아래 링크를 참조해 NVL을 사용할 것을 권장한다

 

오라클 NVL, NVL2 사용방법 및 예제

오라클에서 NVL은 값이 NULL이라면 설정한 값이 나오고 NULL이 아니라면 값이 그대로 나오게 되는데 사용방법은 아래와 같다 ORACLE NVL 사용 시 SELECT NVL('값','NULL일 시 값') FROM 테이블명 -- 실제 사용 시..

wakestand.tistory.com

 

반응형

댓글