1. Definitions
Related functions helps to handle null null.
Null-related functions are:
2, classification
- NVL
assess any data type column or expression is not null. If the original type is null, a non-null value is returned, alternative types; otherwise, return to the original key; - NVL2
assess any data type column or expression is not null. If the original type is null, a non-null value is returned, alternative types; otherwise, return null alternative type; - NULLIF
test for equality of two. If they are equal, the function returns a null value, otherwise the first two test item; - LNNVL
- NANVL
- COALESCE
function returns the first non-null value from the argument list. If all parameters is null, then return null;
3, Case Code
/*
作者:AT阿宝哥
日期:2016年9月18日
愿景:参考官方资料,做最好的课程,成就更多职业人!
邮箱:[email protected]
CSDN:https://blog.csdn.net/goldentec
简书:https://www.jianshu.com/u/8a6075d7a2e0
说明:
注意:
*/
-------------------------------------------------------------------------------
--Demo1:NVL函数,语法:NVL(original,ifnull)
SELECT nvl(1234) FROM dual; --出错,参数个数无效
SELECT nvl(NULL,1234) FROM dual;
SELECT nvl(1234,NULL) FROM dual;
SELECT nvl(mgr,0) FROM emp;--实际案例
-------------------------------------------------------------------------------
--Demo2:NVL2函数,语法:NVL(original,ifnotnull,ifnull)
SELECT nvl2(NULL,1234) FROM dual;--出错,参数个数无效
SELECT nvl2(NULL,1,1234) FROM dual;
SELECT nvl2(1234,1,5678) FROM dual;
SELECT nvl2( 897, 12, 'a string') FROM dual; --出错,类型不匹配。
SELECT nvl2( 897, 12, 88) FROM dual; --成功,类型匹配。
--实际案例
SELECT nvl2(ename ,'Name为不为空', 'Name为空') FROM emp;
SELECT nvl2(ename ,job, 'Name为空') FROM emp;
-------------------------------------------------------------------------------
--Demo3:NULLIF函数,语法:NULLIF(ifunequal,comparison_term)
SELECT NULLIF(1234, 1234) FROM dual;
SELECT NULLIF(1234, 5678) FROM dual;
SELECT NULLIF('21-9月-2016', '20-9月-2016') FROM dual; --注意,这是字符串比较
SELECT NULLIF(SYSDATE + 1, SYSDATE) FROM dual;
SELECT NULLIF(SYSDATE + 1, '20-9月-2016') FROM dual; --出错,类型不匹配
--实际案例
select NULLIF(deptno,30) from emp;
-------------------------------------------------------------------------------
--Demo4:COALESCE函数,语法:COALESCE(expr1,expr2,...exprn)
SELECT COALESCE(NULL,NULL) FROM dual;
SELECT COALESCE(NULL,'OK') FROM dual;
SELECT COALESCE(NULL,NULL,NULL,'OK') FROM dual;
SELECT COALESCE('GOOD',NULL,NULL,'OK') FROM dual;
SELECT COALESCE(substr('abc',4) , 'Not bc' ,'No substring') FROM dual;
--实际案例
SELECT COALESCE(ename ,job) FROM emp;
-------------------------------------------------------------------------------