[오라클] case, decode, case when then else end
본문 바로가기
IT. 컴퓨터

[오라클] case, decode, case when then else end

by 솔기잇 2020. 6. 20.

 

구글 이미지

 

CASE, DECODE 함수

SELECT DECODE(5-3,1,'5-3=1 입니다.'  --5-3이 1 이면 5-3=1 을 찍고 끝

                   ,4,'5-3=4 입니다.'  --아니면 다음 것

                       ,'몰라요')     --아니면 다음 것 

FROM DUAL;

 

<<결과>>  

몰라요                 

 

-------------------------------------------------------------------------------- 

 

CASE WHEN THEN ELSE END

 

--값이 떨어지는 경우--

SELECT CASE 5-3 

       WHEN 1 THEN '5-3=1 입니다.'

       WHEN 2 THEN '5-3=2 입니다.'

       ELSE '몰라요'

       END

FROM DUAL;    

--> 5-3=2 입니다. 

 

SELECT CASE  

       WHEN 5<2 THEN '5 2보다 작습니다.'  --참이면 끝, 거짓이면 다음 것

       WHEN 5>2 THEN '5 2보다 큽니다.'

       ELSE '몰라요'

       END

FROM DUAL;

--> 5는 2보다 큽니다.

 

---------------------------------------------------------------------------

<<성별>>

SELECT SANO AS "사원번호",

            NAME AS "사원명",

            JUBUN AS "주민번호",

            CASE

            WHEN SUBSTR(JUBUN, 7, 1) IN ('1','3') THEN ''

            ELSE '' END  AS "성별"

FROM TBL_NEWSAWON;

 

<<결과>>

“성별” 파일참조

 

------------------------------------------------------------------------------ 

 

<현재나이> = 현재년도 – 태어난년도

SELECT SANO AS "사원번호",

            NAME AS "사원명",

            JUBUN AS "주민번호",

            CASE

            WHEN SUBSTR(JUBUN, 7, 1) IN ('1','3') THEN ''

            ELSE '' END  AS "성별",

         

          EXTRACT(YEAR FROM SYSDATE)

          - (CASE

          WHEN SUBSTR(JUBUN, 7, 1) IN ('1','2')

          THEN TO_NUMBER( SUBSTR(JUBUN, 1, 2) ) + 1900

          ELSE TO_NUMBER( SUBSTR(JUBUN, 1, 2) ) + 2000

          END )

          + 1 AS "현재나이

FROM TBL_NEWSAWON;

 

<<결과>

“현재나이” 파일 참조

 

          /*

        <태아난 년도>= JUBUN 앞 두자리 + 1900(OR +2000)

          CASE

          WHEN SUBSTR(JUBUN, 7, 1) IN ('1','2')

          THEN TO_NUMBER( SUBSTR(JUBUN, 1, 2) ) + 1900

          ELSE TO_NUMBER( SUBSTR(JUBUN, 1, 2) ) + 2000

          END AS "태어난년도"

          */

 

-------------------------------------------------------------------------------

          

<연령대>=JUBUN 앞 두자리 + 1900(OR +2000) 하고

SELECT SANO AS "사원번호",

            NAME AS "사원명",

            JUBUN AS "주민번호",

            CASE

            WHEN SUBSTR(JUBUN, 7, 1) IN ('1','3') THEN ''

            ELSE '' END  AS "성별",            

        

         TRUNC( EXTRACT(YEAR FROM SYSDATE)

          - (CASE

          WHEN SUBSTR(JUBUN, 7, 1) IN ('1','2')

          THEN TO_NUMBER( SUBSTR(JUBUN, 1, 2) ) + 1900

          ELSE TO_NUMBER( SUBSTR(JUBUN, 1, 2) ) + 2000

          END )

          + 1, -1) || '' AS "연령대"

         

FROM TBL_NEWSAWON;

 

<<결과>>

“연령대” 파일 참조


close