블로그는 나의 힘!
[ Programing ]/Database2011. 7. 28. 23:23
SQL 문 안에서 IF THEN ELSE 논리를 사용 가능하다.

방법은 2가지 이다.
- CASE 표현식
- DECODE 함수  ( 오라클 전용 )



CASE 표현식
CASE expr WHEN comparison_expr1 THEN return_expr1
             [ WHEN comparison_expr2 THEN return_expr2
               WHEN comparison_exprN THEN return_exprN
               ELSE else_expr ]
END

CASE 표현식을 사용하면 프로시져를 호출할 필요 없이 SQL 문에서 IF THEN ELSE 논리를 사용 할 수 있다.
컬럼 expr이 comparison_expr과 동일한 첫번째 WHEN ... THEN 쌍을 찾아서 return_expr을 반환한다.
이 조건을 만족하는 WHEN ... THEN 쌍이 없고 ELSE 절이 존재하는 경우, else_expr을 반환 한다.
그렇지 않은 경우 NULL을 반환한다.

return_expr, else_expr에는 NULL 리턴을 지정할 수 없다.
모든 표현식 (expr, comparison_expr 및 return_expr)은 같은 데이터 유형이어야 하며 이러한 데이터 유형으로는 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2가 가능하다.



예 :
SELECT last_name, job_id, salary,
             CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
                                WHEN 'ST_CLERK' THEN 1.15*salary
                                WHEN 'SA_REP' THEN 1.20*salary
             ELSE           salary END "REVISED_SALARY"
FROM employees;

해석
job_id 값을 확인하여 job_id가 IT_PROG 이면 급여가 10% 인상되고, ST_CLERK 이면 급여가 15% 인상되며, SA_REP 이면 급여가 20% 인상이 된다. 다른 업무에 대한 급여 인상은 없다.



'[ Programing ] > Database' 카테고리의 다른 글

[SQL] BETWEEN 조건 사용  (0) 2011.07.28
[SQL] 조건 표현식. DECODE (오라클 전용)  (0) 2011.07.28
[SQL] 우선순위 규칙  (0) 2011.07.28
[SQL] 명령문 설명 및 구분.  (0) 2011.07.28
[SQL] ON Join 추가 조건. AND  (0) 2011.07.27
Posted by Mister_Q