조회된 결과에 따라 값을 변경할떄 , CASE 문을 사용하지않고 DECODE를 사용 할 수 있다.
DECODE 함수는 오라클에서만 지원이 된다.
if... else if... else 와 비슷한 맥락이다.
DECODE( 조회값, 비교값1, 결과값1, 비교값2, 결과값2, 그외값 )
첫번째 매개변수는 조회값이고, 그뒤로 짝수번째 변수는 비교값, 홀수번째변수는 바로앞변수가 조회값과 같을경우 반환하는 값이다.
전체 변수의 개수가 짝수이면 else 에 해당하는 그외값이 있고, 홀수면 없다고 볼수있다.
매개변수의 개수에따라 비교하는 횟수가 늘어난다
예를들어
DECODE( 조회값, 비교값1, 결과값1, 그외값) 이경우 조회값과 비교값1 이 같을경우 결과값1, 그외에는 그외값을 반환한다.
DECODE( 조회값, 비교값1, 결과값1, 비교값2, 결과값2) 이경우 조회값과 비교값1 이 같을경우 결과값1, 다를경우 비교값2와 비교한뒤 같을경우 결과값2를 반환한다. 그외에는 그외값에 해당하는 매개변수가 없으므로 NULL 을 반환한다.
조회된 결과와 비교값이 참인경우, 거짓인경우 각각 설정한 값으로 리턴받을 수 있다.
SELECT DECODE('A', 'A', 1, -1) AS "DECODE" FROM DUAL
-- 1
SELECT DECODE('B', 'A', 1, -1) AS "DECODE" FROM DUAL
-- -1
SELECT DECODE('C', 'A', 1, -1) AS "DECODE" FROM DUAL
-- -1
SELECT DECODE('A','A',1,'B',2) FROM DUAL
-- 1
SELECT DECODE('B','A',1,'B',2) FROM DUAL
-- 2
SELECT DECODE('C','A',1,'B',2) FROM DUAL
-- null
SELECT DECODE('C','A',1,'B',2,-1) FROM DUAL
-- -1
'DB\SQL' 카테고리의 다른 글
[Oracle] null이 아닌 값중 첫번째 찾기(COALESCE) (0) | 2019.10.18 |
---|---|
[Oracle] 첫 단어 대문자로 변경하기(INITCAP) (0) | 2019.08.08 |
[Oracle] 자리수 채우기(LPAD,RPAD) (0) | 2019.08.06 |
[Oracle] 조건에 따른 값변경(CASE문 사용법) (1) | 2019.08.05 |
[Oracle]SELECT 합치기-유니온(UNION,UNION ALL) (4) | 2019.03.13 |