nvl, nvl2
- nvl
nvl(null값이 포함된 필드명, 적용시킬값)
-> null값을 특정값으로 변환
SQL> select ename,nvl(comm,0) from emp;
ENAME NVL(COMM,0)
---------- -----------
SMITH 0
WARD 500
JONES 0
...
- nvl2
nvl2(null값을 포함한 필드명,인수1,인수2)
-> null이 아닌 경우 인수1, null인 경우 인수2 반환
SQL> select ename,sal,comm,nvl2(comm,sal+comm,sal) total_sal from emp;
ENAME SAL COMM TOTAL_SAL
---------- ---------- ---------- ----------
SMITH 800 800
ALLEN 1600 300 1900
...
조건문 ( decode, case~when )
decode 함수는 오라클 sql에서만 사용할 수 있는 비표준 함수이고, 조건이 많아지면 가독성이 떨어진다는 단점이 있다.
이 decode 함수를 대체할 수 있는 구문이 case~when 표현식이다.
- decode
decode(필드명,조건식,계산값,조건식2,계산값2,조건식3,계산값3.디폴트값)
SQL> select ename,job,sal,
2 decode(job,'ANALYST',sal*1.1,'CLERK',sal*1.15,'MANAGER',sal*1.2,sal) "급여인상"
3 from emp;
ENAME JOB SAL 급여인상
---------- --------- ---------- ----------
SMITH CLERK 800 920
ALLEN SALESMAN 1600 1600
...
- case~when
case when 조건식1 then 리턴값1
when 조건식2 then 리턴값2
else 디폴트값
end
SQL> select ename,job,sal,
2 case when job='ANALYST' then sal*1.1
3 when job='CLERK' then sal*1.15
4 when job='MANAGER' then sal*1.2
5 else sal end as "최종금액"
6 from emp;
ENAME JOB SAL 최종금액
---------- --------- ---------- ----------
SMITH CLERK 800 920
ALLEN SALESMAN 1600 1600
...
'DB(ORACLE)' 카테고리의 다른 글
[Oracle]데이터 타입, varchar2 char 차이점, 자료형 변경 (0) | 2021.05.31 |
---|---|
[Oracle]제약조건, Primary key, Foreign key, Unique, Check, 제약조건 삭제, 테이블 이름 변경 (0) | 2021.05.29 |
[Oracle]col명령어, 파라미터 인수질의, 변환함수 (0) | 2021.05.26 |
[Oracle]db모델링 툴 - exerd 30일 평가판 사용하기 (0) | 2021.03.19 |
[Oracle]오라클 뷰 동작원리/ 데이터딕셔너리/ 인라인 뷰 (0) | 2020.12.30 |