[SQL] 일반함수 NVL

·2025년 7월 3일
0

SQL

목록 보기
49/126


ㄴ MARTIN에 NVL(COMM,0) 1400임

nvl: null value

예제 답

select ename, sal, comm, nvl(comm,0)
 from emp;

💡
nvl(숫자형 컬럼, 숫자형 데이터)
nvl(문자형 컬럼, 문자형 데이터)


문제1. 아래의 데이터를 사원 테이블에 입력하시오

insert  into  emp(empno, ename, sal )  values(9382,'jack', 3400); 
commit; 

select * from emp;  

문제2. 이름과 직업을 출력하는데 직업이 null 인 사원은 no job 이란 글씨로 출력하시오

select ename, nvl(job, 'no job')
 from emp;

문제3. (오라클 정규 교재 난이도 상) 이름과 커미션을 출력하는데 커미션이 null 인 사원들은 no comm 이란 글씨로 출력하시오

select ename, nvl(to_char(comm), 'no comm')
 from emp;

💡
comm --> 숫자형
'no comm' --> 문자형
문자를 숫자로 바꿔줄 수는 없으니
comm을 to_char(comm)으로 써서 문자형으로 변환


문제4. 이름과 mgr(관리자 번호) 를 출력하는데 관리자 번호가 null 인 사원들은 no manager 라는 글씨로 출력되게하시오

select ename, nvl(to_char(mgr), 'no manager')
 from emp;

💡
mgr --> 숫자형
'no manager' --> 문자형
mgr을 `to_char(mgr)'로 써서 문자형으로 변환


문제5. 이름과 월급과 커미션과 월급+커미션을 출력하시오

select ename, sal, comm, sal+nvl(comm,0)
 from emp;
 
select ename, sal, comm, nvl2(comm, sal+comm, sal)
 from emp;

💡nvl2
comm --> null이면 sal 반환
null이 아니면 sal+comm을 반환


복습문제. 이름과 커미션을 출력하는데 커미션이 높은 사원부터 출력하고 커미션의 null 값을 맨 아래로 출력되게하시오

select ename, comm
 from emp
 order by comm desc nulls last;

0개의 댓글