검색결과 리스트
글
지금까지는 oracle 독자 함수인 decode를 많이 사용했는데
이제는 표준 sql문에 case문이 있으니
나도 서서히 case문을 사용하는 편으로 바꿔야겠다.
아래의 두 가지 사용방법이 있다.
▶ if-else 와 같은 사용법
SELECT
CASE
WHEN ROUND_METHOD <= 0 THEN FLOOR(c_data.BASE_AMOUNT * RATE)
WHEN ROUND_METHOD >= 2 THEN CEIL(c_data.BASE_AMOUNT * RATE)
WHEN ROUND_METHOD > 0 THEN ROUND(c_data.BASE_AMOUNT * RATE, ROUND_DIGIT)
END
INTO l_UNEMPLOYMENT_INSURANCE
FROM ACCOUNT_M_002
WHERE PERIOD_VALIDITY_FROM <= SYSDATE
AND PERIOD_VALIDITY_TO >= SYSDATE
;
▶ switch 와 같은 사용법
SELECT
CASE ROUND_METHOD
WHEN 0 THEN FLOOR(c_data.BASE_AMOUNT * RATE)
WHEN 1 THEN CEIL(c_data.BASE_AMOUNT * RATE)
WHEN 2 THEN ROUND(c_data.BASE_AMOUNT * RATE, ROUND_DIGIT)
END
INTO l_UNEMPLOYMENT_INSURANCE
FROM ACCOUNT_M_002
WHERE PERIOD_VALIDITY_FROM <= SYSDATE
AND PERIOD_VALIDITY_TO >= SYSDATE
;
▶ 메모
1. else는 생략 가능하지만, 생략되었다면 NULL을 리턴한다.
2. microsoft ACCESS에서는 지원하지 않는다.
3. switch 와 같은 사용법은 if-else 와 같은 사용법의 생략 스타일이라고 볼수 있다.
그러므로 아마도 if-else 와 같은 사용법만 알아두면 될 것 같다.
4. when 조건평가에 있어서, 참이 되는 when이 발견되면 그 밑에 더 정확한 when이 있다고 하더라도
더 이상 처리를 하지 않기에 이 점을 의식하여 case문이 작성할 필요가 있다.
5. performance에 관한 얘기
http://blog.naver.com/json2811/90080666948
[출처] Oracle case문|작성자 제이슨
'먹고살기 > Oracle' 카테고리의 다른 글
GROUP BY의 고급 응용 (0) | 2011.08.10 |
---|---|
DECODE와 CASE WHEN ... (0) | 2011.08.10 |
oracle case when ~ then~ else end (0) | 2011.08.10 |
Oracle Sql Case 사용법 (0) | 2011.08.10 |
[오라클] SQL - UNION에 관한 SQL 규칙 (0) | 2011.07.19 |
RECENT COMMENT