오늘은 오라클에서 조건함수로 많이 쓰이는 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 구문만 잘 숙지해 놓으면 쿼리에 조건식에서 문제 없이 구현 할 수 있을거에요><
담엔 다른 오라클 함수를 가지고 포스팅하겠습니다.
'→ 프로그래밍.데이터베이스 > DB,SQL' 카테고리의 다른 글
SQL 숫자 관련 함수 모음 (0) | 2017.03.28 |
---|---|
[MySQL] 테이블 변경, 생성, 추가, 삭제 쿼리 (0) | 2017.02.13 |
[ORACLE] 오라클 함수(function) 만들기. 함수 생성 (5) | 2016.11.05 |
[ORACLE] LPAD RPAD 함수 :: 문자길이 채우기 (0) | 2016.11.01 |
오라클 DB INSERT와 UPDATE문을 한번에 하기 → MERGE INTO !! (0) | 2016.09.23 |