티스토리 뷰

웹개발/Oracle

[ORACLE(오라클)] CASE와 DECODE

신수동이 2016. 11. 9. 13:29

CASE ~ WHEN ~ THEN ~ ELSE ~ END

[
형식]
CASE 컬럼명 | 표현식 WHEN 조건식THEN 결과1
                                
WHEN 조건식THEN 결과2
                                                 .......
                                
WHEN 조건식THEN 결과
                                
ELSE 결과
             
END

조건문과 조건문 사이에는 콤마(,) 를 사용하지 않는다.
CASE
문은 반드시 END 로 끝내야 한다.
CASE
표현식은 ANSI SQL 형식도 지원한다.

 


 

DECODE

 

[형식]

DECODE( 컬럼명 | 표현식, 조건식1, 결과1, 조건식2, 결과2, … 조건식n, 결과n, DEFAULT)

 

DECODE 함수는 CASE문과 동일한 기능을 수행한다. CASE 문은 반드시 END 로 끝내야 한다.

DEFAULT 값이 생략될 경우 NULL을 반환한다.

비교연산의 대상이 되는 컬럼명과 조건식은 데이터 타입이 동일하거나 서로 변환 가능해야한다.

 

 


* 다음 2개의 쿼리는 동일하지만 조건에 NULL이 나타나면 결과값은 다르게 나타난다.

SELECT CASE NULL WHEN NULL THEN 'A'

                   ELSE 'B'

              END

       FROM DUAL

 

CASE문의 경우 NULLIS NULL이나 IS NOT NULL로 비교해야되기 때문에 조건에 NULL이 하나라도 나타나면 제대로 비교되지 않는다. (결과 : ‘B’)

 

SELECT DECODE(NULL, NULL, 'A', 'B') FROM DUAL

DECODE 함수의 경우 제대로 비교된다. (결과 : ‘A’) 

'웹개발 > Oracle' 카테고리의 다른 글

[오라클(Oracle)] Oracle Error 모음  (0) 2016.10.31
[오라클(Oracle)] DB Lock 해제  (1) 2016.10.26
[오라클(Oracle)] UNION, UNION ALL  (379) 2016.10.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함