《Oracle Database编程指南》13-05:空值相关函数(NULL-Related Functions)

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;
-------------------------------------------------------------------------------

发布了48 篇原创文章 · 获赞 49 · 访问量 9627

猜你喜欢

转载自blog.csdn.net/goldentec/article/details/104802560
今日推荐