개발자의 끄적끄적

[Oracle] 오라클 decode 함수 [펌] 본문

개발/sql

[Oracle] 오라클 decode 함수 [펌]

효벨 2019. 12. 6. 03:00
728x90
반응형

[Oracle] 오라클 decode 함수 [펌]

 

 

오늘은 오라클에서 조건함수로 많이 쓰이는 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 구문만 잘 숙지해 놓으면 쿼리에 조건식에서 문제 없이 구현 할 수 있을거에요><

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



출처: https://jjomin.tistory.com/110 [whatEver]

반응형
Comments