개발자 미니민의 개발스터디

[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

 

 

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기