본문 바로가기
Database

[Oracle] NVL( )

by JJH0100 2022. 11. 7.
728x90
반응형

NVL( )

NULL 값을 만나면 다른 값으로 치환해서 출력하는 함수

 

NVL(컬럼 , 치환할 값)

 

치환값이 숫자일 경우

NVL(sal , 0) : sal 컬럼의 값이 null 일 경우 null 대신 0 으로 치환

NVL(sal , 100)  : sal 컬럼의 값이 null 일 경우 null 대신 100 으로 치환

SELECT ename, comm, NVL(comm, 0), NVL(comm, 100)
FROM emp
WHERE deptno = 30;

 

 

치환 값이 문자일 경우

NVL(position , ‘사원’) -> position 값이 null 일 경우 사원으로 치환하라

 

치환 값이 날짜일 경우

NVL(hiredate,’2014/05/01’) -> hiredate 값이 null 경우 '2014/05/01' 로 치환하라

 

 

EX01

SELECT name, pay, bonus,
TO_CHAR((pay*12 + NVL(bonus, 0)), '999,999') "TOTAL"
FROM professor
WHERE deptno = 201;

 


NVL2( )

null의 유무를 따라 실행하는 함수.

NVL2( COL1 , COL2 , COL3 )

 

EX01

emp 테이블에서 deptno 30번 인 사람들의 empno , ename , sal , comm 값을 출력하되 만약 comm 값이 null 이 아니면 sal+comm 값을 출력하고 comm 값이 null 이면 sal*0 의 값을 출력하세요.

SELECT empno, ename, sal, comm,
NVL2(comm, sal+comm, sal*0) "NVL2"
FROM emp
WHERE deptno = 30;

 

EX02

emp 테이블에서 deptno 30 번인 사원들을 조회하여 comm 값이 있을 경우 'Exist' 을 출력하고 comm 값이 null 일 경우 'NULL' 을 출력하세요.

SELECT empno, ename, comm,
NVL2(comm, 'Exist', 'NULL') "NVL2"
FROM emp
WHERE deptno = 30;

 

728x90
반응형

'Database' 카테고리의 다른 글

[Oracle] DECODE( ) 연습문제  (0) 2022.11.07
[Oracle] DECODE( )  (0) 2022.11.07
[Oracle] TO_NUMBER( )  (0) 2022.11.07
단일행 함수 TO_CHAR 예제  (0) 2022.11.07
[Oracle] 숫자함수  (0) 2022.11.03

댓글