



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;
