본문 바로가기

DB

[SQL] CASE 표현

1. CASE 표현

 

1) IF-THEN-ELSE 논리와 유사한 방식으로 표현식을 작성해서 SQL의 비교 연산 기능 보완

 

2) ANSI/ISO SQL 표준에는 CASE Expression이라고 표시되어 있음

 

3) 함수와 같은 성격을 가지고 있으므로 다른 함수처럼 중첩 사용 가능

[예제]
사원 정보에서 급여가 2000 이상이면 보너스를 1000으로, 1000 이상이면 5000으로, 1000 미만이면 0으로 계산

 

SELECT NAME, SAL,
    CASE WHEN SAL >= 2000
    	THEN 1000
    	ELSE (CASE WHEN SAL >= 1000
                    THEN 500
                    ELSE 0
              END)
    	END as BONUS
FROM EMP;

 

 

4) Oracle의 Decode 함수와 같은 기능을 함

- DECODE 함수는 Oracle에서만 사용되는 함수

- 표현식의 값이 기준값1이면 값1출력, 기준값2이면 값2출력, 기준값이 없을 시 디폴트 값 출력

- CASE 표현의 SIMPLE_CASE_EXPRESSION 조건과 동일함

DECODE(표현식, 기준값1, 값1 [, 기준값2, 값2, ..., 디폴트값)

 

 

 

2. CASE 표현 종류

- 두 가지 표현법 중 하나를 선택해서 사용하면 됨

 

1) SIMPLE_CASE_EXPRESSION

- CASE 다음에 바로 조건에 사용되는 컬럼이나 표현식 표시

- WHEN절에서 앞에서 정의한 컬럼이나 표현식과 같은지 판단하는 문장으로 EQUI(=) 조건을 사용함

- Oracle의 DECODE 함수와 기능면에서 동일

CASE 컬럼 또는 표현식
    WHEN '컬럼 또는 표현식과 같은지 판단' THEN '같으면 수행할 표현절'
    ELSE '같지 않을 시 수행할 표현절'
END

 

 

2) SEARCHED_CASE_EXPRESSION

- CASE 다음 컬럼이나 표현식 표시하지 않음

- WHEN절에서 여러 조건(>, >=, =,  <, <=) 사용함

CASE
    WHEN '컬럼 또는 표현식과 같은지 판단' THEN '조건에 해당되면 수행할 표현절'
    ELSE '조건에 해당되지 않을 시 수행할 표현절'
END

 

'DB' 카테고리의 다른 글

[SQL] 뷰(View)  (0) 2023.03.13
[SQL] 서브쿼리(Subquery)  (0) 2023.03.12
[SQL] NULL 관련 함수  (0) 2023.03.06
[SQL] 테이블 삭제, 테이블의 데이터 삭제 drop, truncate, delete비교  (0) 2023.03.05
[SQL] DCL 예제  (0) 2023.03.02