CASE ~ WHEN ~ THEN ~ ELSE ~ END
[형식]
CASE 컬럼명 | 표현식 WHEN 조건식1 THEN 결과1
WHEN 조건식2 THEN 결과2
.......
WHEN 조건식n THEN 결과n
ELSE 결과
END
조건문과 조건문 사이에는 콤마(,) 를 사용하지 않는다.
CASE 문은 반드시 END 로 끝내야 한다.
CASE 표현식은 ANSI SQL 형식도 지원한다.
결과 부분은 NULL 을 사용해서는 안된다.
[형식]
CASE 컬럼명 | 표현식 WHEN 조건식1 THEN 결과1
WHEN 조건식2 THEN 결과2
.......
WHEN 조건식n THEN 결과n
ELSE 결과
END
조건문과 조건문 사이에는 콤마(,) 를 사용하지 않는다.
CASE 문은 반드시 END 로 끝내야 한다.
CASE 표현식은 ANSI SQL 형식도 지원한다.
결과 부분은 NULL 을 사용해서는 안된다.
case when x = y then a else b end
: 조건 x =y 가 true 일 경우 a 이고 그렇지 않으면 b
case when x < y then a when x = y then b else c end
: 조건 x<y 가 true 일 경우 a 로, 조건 x = y 일 경우엔 b 로 그렇지 않으면 c 로 변경
case XYZ when 'foo' then 'moo' else 'bar' end
: XYZ 가 foo 일 경우 moo 로 변경, 그렇지 않으면 bar 로 변경
예제 만들기!
CREATE TABLE TEST_CASE_WHEN (A VARCHAR2 (5), B VARCHAR2 (5));
INSERT INTO TEST_CASE_WHEN VALUES ('*','*');
INSERT INTO TEST_CASE_WHEN VALUES ('+','+');
INSERT INTO TEST_CASE_WHEN VALUES ('-','-');
INSERT INTO TEST_CASE_WHEN VALUES ('.','.');
COMMIT;
INSERT INTO TEST_CASE_WHEN VALUES ('*','*');
INSERT INTO TEST_CASE_WHEN VALUES ('+','+');
INSERT INTO TEST_CASE_WHEN VALUES ('-','-');
INSERT INTO TEST_CASE_WHEN VALUES ('.','.');
COMMIT;
토드나 SQLPLUS 혹은 SQLGATE 에서 Qurey 를 날려 봅시다.
자, Alias 인 as B 를 붙이므로 좀더 Grid 의 컬럼이 보기 깨끗해집니다. ^^
SELECT a, CASE
WHEN b = '*' THEN 'star'
WHEN b = '+' THEN 'plus'
WHEN b = '-' THEN 'minus'
ELSE '????'
END AS B
FROM test_case_when;
SELECT a, CASE
WHEN b = '*' THEN 'star'
WHEN b = '+' THEN 'plus'
WHEN b = '-' THEN 'minus'
ELSE '????'
END AS B
FROM test_case_when;
결과 >>>>
[출처] http://joke00.tistory.com/103
'데이터베이스 > Oracle' 카테고리의 다른 글
조인(Join) (0) | 2015.11.20 |
---|---|
오라클 rownum 쿼리 (0) | 2015.11.20 |
[Oracle 관리] 오라클 EM(Enterprise Manager) 사용법 (0) | 2015.11.06 |
[Oracle] 계정 생성 및 삭제, 권한 부여, 테이블스페이스 지정 (0) | 2015.11.06 |
테이블스페이스(TableSpace) 정의 (0) | 2015.11.06 |