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
방법은 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% 인상이 된다. 다른 업무에 대한 급여 인상은 없다.
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 |