Skip to content

CASE #
Find similar titles

CASE #

정의 #

JAVA나 C와 같은 프로그래밍 언어에 자주 사용되는 IF(조건문)문을 SQL로 적용할수 있는 문법이다. 유사한 문법으로 DECODE등이 있다.

형식 #

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

예제1 : 특정 컬럼의 값만 비교 하고자 할때 #

SELECT CASE TO_CHAR(SYDATE, 'YYYY') WHEN '2016' THEN SYSDATE
        WHEN '2017' THEN SYSDATE+1
        ELSE NULL END SYS_DATE
FROM DUAL;

CASE와 WHEN사이에 바교하고자 하는 컬럼을 넣고 WHEN과 THEN사이에 비교하고자 하는 값을 넣어 비교한다.

예제2 : 임의로 조건을 넣고자 할때 #

SELECT CASE WHEN TO_CHAR(SYSDATE, 'YYYY') = '2013' THEN SYSDATE
    WHEN TO_CHAR(SYDATE, 'MM') = '11' THEN SYSDATE+1
    ELSE NULL END SYS_DATE
FROM DUAL;

CASE와 WHEN사이는 비우고, WHEN과 THEN 사이에 사용자가 필요한 조건문을 WHERE절에 넣는것 처럼 사용한다

(예제2)의 경우에는 하나의 조건 뿐만 아니라 다수의 조건을 한번에 아래와 같이 넣을수 있는 장점이 있다

SELECT CASE WHEN TO_CAHR(SYDATE, 'YYYY') = '2013'
        AND TO_CHAR(SYSDATE, 'MM') = '10' THEN SYSDATE
        WHEN TO_CHAR(SYDATE, 'YYYY') = '2014'
        OR TO_CHAR(SYSDATE, 'MM') = '11' THEN SYSDATE+1
    ELSE NULL END SYS_DATE
FROM DUAL;
0.0.1_20140628_0