Oracle NVL, DECODE 함수

Posted by 겨울에
2011. 7. 7. 13:03 scrap/ Oracle
출처 : http://blog.naver.com/chocolleto/30099301093        Oracle NVL, DECODE 함수|작성자 외계인셩  

Oracle NVL, DECODE 함수

 

 NVL()

▪ 정의

NVL(string1, replace_with)

  - string1 : null값을 포함할 수 있는 값이나 표현식.

  - replace_with : nll값을 전환시 사용할 값.

 특징

  NULL 값을 다른 값으로 바꿀 때 사용.

  모든 데이터 타입에 적용 가능전환되는 값의 데이터 타입을 일치시켜야 함;

  - row 가 없는 값에 대해서도 값을 얻고 싶을 경우에는 숫자관련 함수와 같이 사용.

    Ex> select nvl(max(sal), 0) from emp where type=’Z’;

▪ 예제

// desc emp;

 

// select * from emp;

 

/* type null이면 ‘D’로 바꾸어 출력. */

 

select nvl(type, 'D'), name, sal, logday from emp;

/* sal null이면 ‘20000’으로 바꾸어 출력. */

 

select type, name, nvl(sal,20000), logday from emp;

/* logday null이면 to_date(’11-12-2010’, ‘DD-MM-YYYY’)로 바꾸어 출력. */

 

select type, name, sal, nvl(logday, to_date('11-12-2010', 'DD-MM-YYYY')) from emp;

 

 DECODE()

▪ 정의

DECODE({column | expression}, search1, result1 [, search2, result2] ... [, default])

  - column | expression : 조건을 수행해야 할 컬럼 혹은 표현식.

  - search : 조건.

  - result : 해당 조건이 참일 경우 수행하는 부분.

  - default : else에 해당할 경우 수행하는 부분.

▪ 특징

  특정 컬럼의 값을 기준으로 마치 switch case문을 사용하는 것과 같은 효과를 내는 함수.

  해당 컬럼의 값이 ‘A’이면 지정한 특정한 값을 출력하교, ‘B’이면 또 다른 값을 출력.

  기본값을 정해서 조건을 만족하지 않는 경우의 출력 제어 가능.

▪ 예제

/* type에 따라 직업명 출력(A:개발,B:기획,C:디자인, default:인사) */

 

select type, name, sal, logday, decode(type, 'A', '개발', 'B', '기획', 'C', '디자인', ‘인사’) as job from emp;

/* type별 count 하기. */         

 

select

count(decode(type, 'A', name)) as A_cnt,

count(decode(type, 'B', name)) as B_cnt,

count(decode(type, 'C', name)) as C_cnt,

count(decode(type, '', name)) as default_cnt

from emp;

/* type에 따른 인상급여 출력. */

 

select type, name, sal, decode(type, 'A', sal*2, 'B', sal*1.05, 'C', sal*1.1, sal*1.15) as newsal from emp;

 

▫ 참고 자료

http://yagi815.tistory.com/467

http://luckys.tistory.com/35