728x90
반응형
nvl 함수
nvl 예제
문제 : emp 테이블에서 sal * comm 값이 100000보다 작은 사원만
empno, ename,sal, comm, sal*comm 을 출력하라.
comm 값이 null 값인 경우가 있다면, where 절을 어떻게써야할지 애매할 때가 있다.
select empno, ename, sal, comm, rpad(to_char(sal*comm,'999,999,999'),12) as 지급금액
from emp
where sal*nvl(comm,0) <1000000;
nvl(comm,0) 이 뜻하는 바는, comm 의 값이 null 이라면 0으로 치환한다는 의미이다.
문제 : emp 에서 comm 값이 null 인 경우는 '해당 없음' 으로,
아니라면 원래 값이 출력되도록 empno, ename,sal, comm 을 출력하라.
select empno, ename, sal, lpad(nvl(to_char(comm),'해당 없음'),10)
from emp;
to_char 를 이용해서 comm 을 문자형으로 바꿔야 에러가 나지 않는다.
decode 함수
위 예제를 decode 함수를 이용해서 풀 수도 있다.
select empno, ename, sal,
decode(comm,null,'해당없음')
from emp;
decode 함수를 사용하면, 굳이 형변환을 하지 않아도 '해당 없음' 을 출력해낼 수 있다.
decode 함수는 다른 프로그래밍 언어의 삼항연산자와 비슷한 느낌이다.
decode(comm,null,'해당없음') 의 의미는 아래와 같다.
comm 의 값이 널이면 '해당 없음'
switch-case 문과도 비슷한 느낌을 얻을 수 있다.
728x90
반응형
'Archive > Develop' 카테고리의 다른 글
[ Oracle ] Oracle sql case 문 예제 (0) | 2021.03.15 |
---|---|
[ CodeUp ] Python 기초 100제 | 6056 번 풀이 (0) | 2021.03.15 |
[ Oracle ] 휴지통 확인하고 비우기 (0) | 2021.03.15 |
[ Oracle ] to_char를 이용해 숫자 사이의 컴마찍기 / 원화 출력하기 (0) | 2021.03.15 |
[ Oracle ] 제약조건 확인하기 (조인 사용) (0) | 2021.03.15 |