NULL
값을 다른 값으로 변경할 때 사용함
par1
가 NULL
이라면 par2
를 반환
par1
가 NULL
아니라면 par1
를 반환
select ename, sal, comm, NVL(comm,0) from emp;
-- comm 가 NULL 이라면 0
-- comm 가 NULL 이 아니라면 comm
NULL
값을 다른 값으로 변경할 때 사용함
par1
가 NULL
이라면 par3
를 반환
par1
가 NULL
아니라면 par2
를 반환
select ename, comm, NVL2(comm,'[등록O]'||comm, '[등록X]')
from emp;
-- comm 가 NULL 이라면 par3 실행 : '[등록X]'
-- comm 가 NULL 이 아니라면 par2 실행 : '[등록O]'||comm
par1
값과 par2
가 같을 때, NULL
을 반환
par1
값과 par2
가 같지 않을 때, par1
을 반환
select ename,job, nullif(job,'SALESMAN')
from emp;
-- job 이 'SALESMAN' 이라면 Null 반환
-- job 이 'SALESMAN' 이 아니라면 job 을 반환
par1
부터 parN
까지 순서대로 조회해서
처음으로 등장하는 NULL
이 아닌 값을 반환
모든 par
가 NULL
이라면 NULL
반환
select comm,sal,9999,coalesce( comm ,sal,9999)
from emp;
-- comm 이 NULL 이 아니라면 comm 반환
-- comm 이 NULL 이 라면 sal 확인
-- sal 이 NULL 이 아니라면 sal 반환
-- sal 이 NULL 이라면 9999 확인
-- 9999 는 NULL 이 아니므로 9999 반환
select
에 =
조건을 걸어 사용할 때 사용
c.f) where
절은 필터링 되어 표시 또한 select
절에 사용 불가함
select ename, sal, decode(sal,
3000,'A팀',
5000,'B팀',
'C팀')
from emp;
-- sal = 3000 이라면 'A팀'
-- sal = 5000 이라면 'B팀'
-- 그 외의 sal 값은 'C팀'
select
에 다양한 조건을 걸어 사용할 때 사용
case
when
조건then
반환값
when
조건then
반환값
when
조건then
반환값
else
디폴트반환값end
c.f) DECODE
는 =
만 사용 할 수 있는 반면 , CASE
는 다양한 조건을 걸어서 사용 할 수 있다.
select ename, sal,
case when sal < 3000 then 'A팀'
when sal > 4000 then 'B팀'
else 'C팀' end
from emp;