5.7. NVL, NVL2, NULLIF, COALESCE
NVL
NVL 함수는 NULL 값을 다른 값으로 바꿀 때 사용하며, 모든 데이터 타입에 적용이 가능하다.
-- 매니저가 없는 값을 0으로 바꾸어서 출력하는 예제.
SELECT
empno, NVL(mgr, 0) mgr
FROM
emp
WHERE
deptno = 10;
EMPNO MGR
------- -------
7782 7839
7839 0
7934 7782
NVL2
- - NVL2라는 함수는 NVL함수의 DECODE 함수의 개념을 합쳤다고 생각하면 쉽습니다.
- - NVL2(expr, expr1, expr2)
- - expr의 값이 NULL이 아닐 경우에는 expr1의 값을 반환 하고, NULL일 경우에는 expr2의 값을 반환 한다.
-- 매니저가 있는경우 1을 없는경우 0을 출력하는 예제이다.
SELECT
empno, NVL2(mgr, 1, 0) mgr
FROM
emp
WHERE
deptno = 10;
EMPNO MGR
------- ----------
7782 1
7839 0
7934 1
NULLIF
- - NULLIF(exp1, exp2)
- - exp1값과 exp2값이 동일하면 NULL을 그렇지 않으면 exp1을 반환
- - CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
COALESCE
- - COALESCE(expr1,expr2,expr3,…)
- - expr1이 NULL이 아니면 expr1값을 그렇지 않으면 COALESCE(expr2,expr3,…)값을 반환.
- - NVL 함수와 비슷하다.
-- 아래 문장을 실행해 보자.
SELECT
COALESCE
(comm,1), comm
FROM
emp;
COALESCE
(COMM,1) COMM
---------------- ----------
1
300 300
500 500
1
1400 1400
1
1
1
0 0
1
1
'Database > Oracle SQL' 카테고리의 다른 글
7.2. Single-Row Subquery (0) | 2019.04.18 |
---|---|
7.1. Subquery란? (0) | 2019.04.18 |
6.2. GROUP BY와 HAVING절 (0) | 2019.04.18 |
6.1. 집계함수(Aggregate function)란? (0) | 2019.04.18 |
5.6. DECODE와 CASE (0) | 2019.04.17 |
5.5. 기타 함수들 (0) | 2019.04.17 |
5.4. Conversion Functions (변환 함수) (0) | 2019.04.17 |
5.3. Datetime Functions (날짜 함수) (0) | 2019.04.17 |