2009년 4월 16일 목요일

Oracle DECODE

Oracle을 처음 접하면서 DECODE란 함수를 보고 당황을 했었다...

AS400 DB2의 CASE...WHEN...ELSE...END와 같은 거였다...

기본형은 이렇게 된다...

형식) DECODE(조건(비교당할 변수), 비교값, 맞을때, 틀릴때)

무신 말인가 하면 예를 들어보면...

SELECT ... FROM ... WHERE CODE LIKE DECODE(:sType, 'CD', :sCode, '') '%' 이렇게 된다.

즉 sType의 값이 'CD'이면 SELECT ... FROM ... WHERE CODE LIKE :sCode '%'가 되는 것이고 'CD'가 아니면 SELECT ... FROM ... WHERE CODE LIKE '' '%'가 되는 것이다...

한가지 응용을 해보면...

자주 사용하는 형태가 이런게 가끔 나오더라...

ASTSTATE = DECODE(:sAststate, '01', '02', DECODE(:sAststate, '02', '03', '07'))

풀어보면 sAststate의 값이 '01'이면 ASTSTATE에 '02'를 넘기고 그렇지 않으면 다시 비교를 해서 '02'이면 '03'을 넘기고 그렇지 않으면 최종적으로 '07'의 값을 넘기게 된다...

쫌 쉽다...

댓글 없음:

댓글 쓰기