본문 바로가기
→ 프로그래밍.데이터베이스/DB,SQL

오라클 조건함수 DECODE 함수, CASE WHEN 표현식

by jjo_Mean 2016. 11. 24.


오늘은 오라클에서 조건함수로 많이 쓰이는 DECODE에 대해서 포스팅해드리겠습니다.


오라클 내장함수에는 우리가 자바에 C에서 쓰는 if문과 같은 기능을 하는 DECODE라는 함수가있습니다.

즉 오라클에서의 조건문인거죠. JAVA에서 보면 IF문을 중첩해서 사용하는데 DECODE도 중첩해서 사용할 수 있어요.



먼저 기본 구분에 대해 알아볼게요.



[ DECODE 기본구문 ]


DECODE(기준값,조건1,결과1,결과2)


- 기준값이 조건1이면 결과1, 아니면 결과2

이렇게 해석할 수 있어요. 저기에서 결과2를 생략해 주셔도 되는데 생략할 경우에는 자동으로 NULL로 반환이되요.


DECODE랑 비슷한 표현식이 CASE 표현식이 있어요. CASE문은 오라클 내장함수는 아니에요.

근데 DECODE보다 표현할 수 있는 범위가 더 넓어서 많이 사용하고있어요.


[ CASE ~ WHEN 표현식 ]


CASE 대상값 WHEN 비교값1 THEN 결과1

WHEN 비교값2 THEN 결과2

ELSE 결과3

END;


- 대상값이 비교값1이면 결과1 비교값2면 결과2 그 외는 결과3 이렇게 해석이 될 수 있어요.

저걸 DECODE로 표현하면 DECODE(대상값,비교값1,결과1,비교값2,결과2,결과3);

저렇게 표현되겠죠?ㅋㅋㅋ 어떻게보면 저런 CASE기본구문은 DECODE를 사용하는게 더 깔끔해요.



[ 확장된 CASE ~ WHEN 표현식 ]


SELECT SCO

CASE WHEN SCO>=90 THEN 'A'

WHEN SCO>=80 THEN AND SCO<90 THEN 'B'

WHEN SCO>=60 THEN AND SCO<80 THEN 'C'

ELSE 'F'

FROM SCO_TABLE

 

SCO가 90이상이면 'A' 80~89점면 'B' 60~79점이면 'C' 그 나머지는 'F'로 해석할 수 있어요.

이와같이 DECODE로는 표현하기 힘든 조건들은 CASE WHEN구문을 사용하면 더 편하게 구현 할 수 있겠죠?



DECODE와 CASE WHEN 구문만 잘 숙지해 놓으면 쿼리에 조건식에서 문제 없이 구현 할 수 있을거에요><

담엔 다른 오라클 함수를 가지고 포스팅하겠습니다.