NULL과의 연산은 NULL을 반환하기 때문에 사용
NVL
expr1 이 NULL이면 expr2 반환 그외는 expr1 반환
NVL(expr1, expr2)
--if(expr1 == null)
-- return expr2;
--else
-- return expr1;
SELECT empno, sal, comm, NVL(comm, 0)
FROM emp;
NVL2
expr1이 null이 아니면 expr2, 그외엔 expr3 반환
NVL2(expr1, expr2, expr3)
--if(expr1 != null)
-- return expr2;
--else
-- return expr3;
SELECT empno, sal, comm, NVL2(comm, comm, 0)
FROM emp;
NULLIF
expr1과 expr2가 같으면 null을 반환, 그외엔 expr1 반환
NVLLIF(expr1, expr2)
-- if(expr1 == expr2)
-- return null
-- else
-- return expr1
-- sal 이 3000이면 NULL 반환
SELECT ename, sal, comm, NULLIF(sal,3000)
FROM emp;
COALESCE
인자 중에 가장 처음으로 NULL값이 아닌 값을 갖는 인자를 반환
COALESCE(expr1, expr2............)
--if (expr1 != null)
-- return expr1
--else
-- COALESCE(expr2, ....)
SELECT COALESCE(NULL, NULL, 30, NULL) -- 30 반환
FROM dual;
-
NULL 함수 실습
SELECT ename, mgr, NVL(mgr,111), hiredate, NVL(hiredate, SYSDATE) FROM emp; SELECT empno, ename, mgr, NVL(mgr,9999) mgr_n, NVL2(mgr,mgr,9999) mgr_n_1, COALESCE(mgr,9999) mgr_n_2 FROM emp; SELECT userid, usernm, reg_dt, NVL(reg_dt, SYSDATE) FROM users;
반응형
'IT > SQL' 카테고리의 다른 글
| [ORACLE] GROUP BY 함수 (0) | 2020.07.01 |
|---|---|
| [ORACLE]SQL 조건문(Condition) (0) | 2020.07.01 |
| [ORACLE] 형변환 / 실행계획 / 국제화 i18n (0) | 2020.06.30 |
| [ORACLE] 문자열 함수, 숫자 관련 함수, 날짜 관련 함수 (0) | 2020.06.30 |
| [ORACLE] 바인딩 변수/ SQL developer (0) | 2020.06.29 |