[Oracle] 자바 - CASE 표현식과 DECODE 함수
by mini_min[Oracle]
자바 - CASE 표현식과 DECODE 함수
✔️ CASE 표현식
IF 와 유사하며, 성능은 좋지만 쿼리가 길어지는게 단점이다.
1) CASE 표현식
CASE expr
WHEN ~ THEN ~
WHEN ~ THEN ~
END [별명]
+ 간단한 CASE 표현식은 보통 사용하진않는다고함
SELECT empNo, name, rrn,
CASE MOD(SUBSTR(rrn, 8, 1), 2) --MOD 나머지 구하기
WHEN 0 THEN '여자'
WHEN 1 THEN '남자'
END AS 성별
FROM emp;
✔️ 조건 CASE 표현식
WHEN 뒤에 조건식이 들어가는 CASE 표현식이다.
SELECT empNo, name, sal, bonus, (sal+bonus) AS 'tot',
CASE
WHEN (sal+bonus) >= 3000000 THEN (sal+bonus) * 0.03
WHEN (sal+bonus) >= 2000000 THEN (sal+bonus) * 0.02
ELSE 0
END 세금
FROM emp;
✔️ DECODE 함수
성능은 좋지 않지만, 코드는 참 편한 함수다.
DECODE(a, 'b', 1, 2);
-- a가 b이면 1, 아니면 2 반환
DECODE(a, 'b', 1);
-- a가 b이면 1, 아니면 null
DECODE(a, 'b', 1, 'c', 2)
-- a가 b이면 1, c이면 2, 그렇지 않으면 null
DECODE(a, 'b', 1, 'c', 2, 3)
-- a가 b이면 1, c이면 2, 아니면 3 반환
DECODE (SUBSTR(rrn, 8, 1), 1, '남자')
FROM emp;
--성별이 1이면 남자, 그렇지 않으면 null
'SQL쿼리' 카테고리의 다른 글
[Oracle] 오라클 - 집합 연산자 (0) | 2022.08.04 |
---|---|
[Oracle] 오라클 - ORDER BY 절 (+랜덤 출력) (0) | 2022.08.04 |
[Oracle] 오라클 - WITH, ESCAPE (0) | 2022.08.04 |
[Oracle] 오라클 - 그룹 연산자(ANY(SOME), ALL), BETWEEN, IN (0) | 2022.08.04 |
[Oracle] 오라클 - 테이블 정보 확인 (0) | 2022.08.04 |
블로그의 정보
개발자 미니민의 개발로그
mini_min