81일차 DB 오라클 DECPDE, CASE

jin·2022년 8월 19일
0

1. DECODE

기준이 되는 데이터를 먼저 지정한 후 해당 데이터 값에 따라 다른 결과 값을 내보내는 함수
자바의 if 조건문 또는 switch-case 조건문과 비슷한다.
기본 형식
DECODE(
[검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과],
[조건1], [데이터가 조건1과 일치할 때 반환할 결과],
[조건2], [데이터가 조건2와 일치할 때 반환할 결과],
...
[조건N], [데이터가 조건n과 일치할 때 반환할 결과],
[위 조건1~조건n과 일치할 경우가 없을 때 반환할 결과]
)

-- [실습 1-1] DECODE 함수를 사용하여 출력하기
Select ename, sal, comm,
	decode(job,
		'MANAGER',  sal*1.1,
		'SALESMAN', sal*1.05,
		'ANALYST', sal,
		sal*1.03) as upsal
From emp;

2. CASE

CASE문은 각 조건에 사용하는 데이터가 서로 상관없어도 된다.
기본 형식
CASE []
WHEN [조건1] THEN [조건1의 결과 값이 true일 때, 반환할 결과]
WHEN [조건2] THEN [조건1의 결과 값이 true일 때, 반환할 결과]
...
WHEN [조건n] THEN [조건n의 결과 값이 true일 때, 반환할 결과]
ELSE [위 조건1~조건n과 일치하는 경우가 없을 때 반환할 결과]
END

-- [실습 2-1] CASE문을 사용하여 출력하기
Select empno, ename, job, sal,
	case job
	  when 'MANAGER' then sal*1.1
	  when 'SALESMAN' then sal*1.05
	  when 'ANALYST' then sal
	  else sal*1.03
	end as upsal
From emp;
-- [개념 2-2] 기준 데이터 없이 조건식만으로 CASE문 사용하기
-- [실습 2-2] 열 값에 따라서 출력 값이 달라지는 CASE문
Select empno, ename, comm,
	case
	  when comm is null then '해당사항 없음'
	  when comm = 0 then '수당 없음'
	  when comm > 0 then '수당 : ' || comm
	end as comm_text
From emp;

0개의 댓글