[오라클] CASE문, DECODE문

심심이·2024년 2월 19일

oracle

목록 보기
10/40

CASE 문

사용 방법

CASE WHEN 조건 THEN 리턴값 --만족하는 조건 없을시 NULL 리턴
	 WHEN 조건2 THEN 리턴값2  
     ELSE 그 외 -- 생략 가능 
END -- 끝낼 때는 END로 끝내준다.
-- where절에도 사용이 가능함. 

사용 방식


------if 문처럼 사용 
SELECT
    CASE
        WHEN 4 > 5  THEN '4는 5보다 큽니다.' -- CASE의 결과물이 WHEN 의 결과와 같을 때 참이라면 THEN
        WHEN 5 > 7  THEN '5는 7보다 큽니다.'
        WHEN 3 > 2  THEN '3는 2보다 큽니다.'
        ELSE '나는 수학을 몰라요'
    END AS "결과"
FROM
    dual;

-- 3는 2보다 큽니다.

------- 또는 switch 문처럼 사용 

SELECT 
    CASE 5 - 2  -- CASE  뒤에 비교할 컬럼 입력
        WHEN 4 THEN '5-2=4 입니다.'  --WHEN 뒤 비교할 값 입력 
        WHEN 1 THEN '5-2=1 입니다.'
        WHEN 3 THEN '5-2=3 입니다.'
        ELSE '나는 수학을 몰라요'
    END AS '결과' 
FROM 
    dual;



DECODE(컬럼, 조건1, 결과1, 조건2, 결과2, ...)

  • 컬럼과 조건1이 같다면 결과 1을 반환
  • 컬럼과 조건2가 같을때는 결과 2를 반환
  • if else와 비슷한 기능
SELECT 
    DECODE(5-2, 4, '5-2 = 4 입니다',
                1, '5-2 = 1 입니다',
                3, '5-2 = 3 입니다',
                '나는 수학을 몰라요ㅜㅜ') AS "결과" -- 마지막은 else 
FROM dual;
  
profile
개발하는 심심이

0개의 댓글