일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 한메일
- 이클립스
- Ajax
- Internet Explorer 8
- php
- 오좀니아
- VMware
- jQuery
- 한메일 pop
- Windows 7
- XP 설치
- 윈도우 7
- 한메일 smtp
- Live Mesh
- 이클립스 설정
- IE 8
- USB 레지스트리
- DDos 전용 백신
- 이클립스 플러그인
- HP
- 파워블로그
- ddos
- VMwareTools
- 옴니아2
- PDA
- HP 신제품
- 오즈 옴니아
- 삼성 메모리
- 파블애드
- IE8
- Today
- Total
엉망진창
ORACLE CASE 사용법 본문
SQL은 CASE문장의 네가지 유형을 지원합니다.
1. 간단한 CASE 표현식
2. 검색 CASE표현식
3. NULLIF
4. COALESCE
이중에서 간단한 CASE표현식은 Oracle 8.1.7 에서 제공되었으며, 나머지 기능들은 Oracle 9i에 포함됩니다. 또한 CASE표현식은 PL/SQL에서도 지원(9i 이후부터)되며, 표현식과 문장으로 분류됩니다.
간단한 CASE 표현식
------------------------------------------------------------------
이것은 Oracle 9i 이전의 서버에서 제공하던 DECODE 문장과 유사하며 주어진 표현식에서 검색을 하거나 값을 치환하는데 사용될 수 있습니다. 또 각각의 검색 값에 대해서 반환되는 값을 명시할 수 있으나, 비교 연산자는 허용되지 않습니다.
SQL> SELECT ename ,
2 (CASE EXTRACT(YEAR FROM hiredate)
3 WHEN 1982 THEN '3 years service'
4 WHEN 1981 THEN '4 years service'
5 WHEN 1980 THEN '5 years service'
6 END) AS "Award for 2000"
7 FROM emp
8 WHERE EXTRACT(YEAR FROM hiredate) IN (1982, 1981, 1980)
9 ORDER BY hiredate ;
검색 CASE 표현식
-----------------------------------------------------------------
검색 CASE 표현식은 IF...THEN ELSE 구조와 유사하며, 표현식 내에서 조건에 따른 검색과 값들의 치환을 하는데 사용될 수 있다. 각 WHEN 조건은 논리적 연산자(AND, OR등)와 결합되어 사용될 수 있으며, 조건 표현식에서 비교 연산자를 사용할 수 있다. 따라서, 간단한 CASE 표현식보다는 유연하다고 할 수 있다. 예를 들어 EMP 테이블에서 Sal 컬럼의 범위에 따른 영역을 표현하는 SQL문과 결과는 다음과 같다.
SQL> SELECT empno, ename,
2 (CASE
3 WHEN sal >= 5000 THEN 'High Sal'
4 WHEN sal >= 3000 AND sal <= 5000 THEN 'Middle Sal'
5 WHEN sal >= 1000 AND sal < 3000 THEN 'Average Sal'
6 WHEN sal < 1000 THEN 'Low Sal'
7 END) AS Sal_Category
8 FROM emp ;
NULLIF 함수
-----------------------------------------------------------------
NULLIF 함수의 경우 첫번째 입력인자와 두번째 입력인자가 같은 경우에는 NULL을 반환하고, 그렇지 않을 경우에는 첫번째 입력인자의 값을 반환한다. 예를 들어 EMP 테이블의 사원중에 Sal 컬럼의 값이 5000인 사람에 대해 NULLIF함수를 적용하는 SQL문과 결과는 다음과 같다.
SQL> SELECT empno, sal
2 FROM emp
3 WHERE NULLIF(sal, 5000) IS NULL ;
만약 NULLIF 함수를 CASE표현식으로 나타낸다면 다음과 같다.
CASE
WHEN expression1 = expression2 THEN NULL
ELSE expression1
END ;
COALESCE 함수
-----------------------------------------------------------------
COALESCE 함수는 Oracle의 NVL함수를 일반화한 것이다. 즉, 첫번째 입력 인자가 null이 아닌 경우에는 첫번째 입력인자를 반환하고, 아닐 경우에는 두번재 표현식에 대해서 평가를 계속하게 된다. 예를 들어, EMP 테이블에서 COMM 컬럼의 값이 널인지 검사하는 SQL문은 다음과 같다.
SQL> SELECT ename, COALESCE(comm, 'NULL')
2 FROM emp ;
NULLIF함수와 유사하게 CASE표현식으로 나타내면 다음과 같다.
CASE
WHEN expression1 IS NOT NULL THEN expression1
ELSE expression2
END ;
또한, NVL함수에 비해 COALESCE함수의 장점은 여러 대체 값을 취할 수 있다는 것이다. 예를 들어, 첫번째 입력 인자가 null일 경우에는 나머지 표현식에 대해서 COALESCE를 계속 적용하는 것이 가능하다.
[출처] [펌] ORACLE CASE 사용법|작성자 제이피
'Study_DB > DB_Oracle' 카테고리의 다른 글
윈도우 스케줄을 이용한 오라클 자동 백업 스크립트 (0) | 2009.02.04 |
---|---|
Export에 의한 백업 (0) | 2009.01.22 |
Outer Join (LEFT, RIGHT, FULL OUTER JOIN) (1) | 2008.09.05 |
오라클 문자열 함수 (0) | 2008.02.01 |
Oracle 설치시 areasQueries 에러 발생하는 경우 (0) | 2008.01.14 |