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 |