1、定义
与null相关的函数有助于处理null。
与null相关的函数有:
2、分类
- NVL
评估任何数据类型的列或者表达式是不是空值。如果原始类型是空值,则返回备选类型的非空值;否则,返回原始项; - NVL2
评估任何数据类型的列或者表达式是不是空值。如果原始类型是空值,则返回备选类型的非空值;否则,返回备选类型的空值; - NULLIF
测试两项的相等性。如果相等,函数就返回空值,否则返回两个测试项的第一项; - LNNVL
- NANVL
- COALESCE
函数从参数列表中返回第一个非空值。如果所有参数为空,那么返回空值;
3、案例代码
/*
作者: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;
-------------------------------------------------------------------------------