1、NVL函数

nvl(expr1,expr2),如果expr1为空,则返回expr2;

2、NVL2函数

nvl2(expr1,expr2,expr3),如果expr1为空,则返回expr3,否则返回expr2;

3、NULLIF函数

nullif(expr1,expr2),如果expr1=expr2,返回空,否则返回expr1,要求两个表达式数据类型一致;

SQL> insert into t1 values(9);

说明1:NVL和NVL2函数在进行空值判断的时候,都会将函数内的表达式执行一次。

4、DECODE函数:

是oracle数据库独家提供的函数功能,不是sql标准,

相当于程序语言中的 if 1=1 then 1 else 1!=1的执行效果;

DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )

5、CASE函数

case expr

when comparison_expr1 then return_expr1

when comparison_expr2 then return_expr2

when comparison_expr3 then return_expr3

......

when comparison_exprN then return_exprN

end

关于nvl、nvl2、decode函数执行性能比较

SQL> create table t1 (i int);--创建t1临时表

SQL> insert into t1 values(9);

SQL> insert into t1 values(9);--插入3行数据,数据值都是9

SQL> create or replace function sleep_now return number is

2  i number;

3  begin

4  i :=0;

5  while8

6  i<=1000000

7  loop

8  i :=i+1;

9  end loop;

10  return i;

11  end;

12  /                         --创建一个sleep_now函数,目的是为了加长sql执行的时间

SQL> set timing on;            --设置sqlplus命令执行时间

SQL> select  nvl(i,sleep_now()) from t1;

NVL(I,SLEEP_NOW())

------------------

9

9

9

Executed in 0.343 seconds  --判断t1表中的i字段是否为空,为空则执行sleep_now()函数;

sql执行时间是0.343秒;

SQL> select  nvl2(i,sleep_now(),1) from t1;

NVL2(I,SLEEP_NOW(),1)

---------------------

1000001

1000001

1000001

Executed in 0.343 seconds  --同样使用nvl2函数进行测试

--使用decode进行相同测试,执行时间是0.063秒

SQL> select decode(i,null,sleep_now(),1111) from t1;

DECODE(I,NULL,SLEEP_NOW(),1111

------------------------------

1111

1111

1111

Executed in 0.063 seconds

总结:错误的、不恰当的使用nvl函数,后患无穷!

原文:http://dushuai.blog.51cto.com/9461011/1562279

oracle判断空值的函数nvl2,Oracle nvl、nvl2、nullif、decode、case函数详解相关推荐

  1. Windows系统里Oracle 11g R2 Client(64bit)的下载与安装(图文详解)

    1.全网最详细的Windows系统里Oracle 11g R2 Client(64bit)的下载与安装(图文详解) 方法地址:https://www.cnblogs.com/zlslch/p/9273 ...

  2. pandas新字段(数据列)生成、使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战

    pandas新字段(数据列)生成.使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战 pandas apply用法: pandas apply方法的作用原理 ...

  3. oracle判断是否为空为空赋值,sql数据库中ISNULL函数用法 sql语句判断值是否为空...

    在使用sql数据库的过程,由于服务器设置不当导致sql server的某个字段为空,导致部分内容显示失败,就需要将为空的字符替换为制定的字符. 例子,sql语句: use 数据库 update new ...

  4. oracle判断字符串是不是日期,在ORACLE中如何判断一个字符串是否是一个合适的日期...

    很多时候, 我们碰到的数据库都是历史数据库, 有时就会碰到各种各样的数据不规范的情况, 在这里讨论一下日期字符串的处理. 虽然各种数据库中都有各自的日期类型, 但是因为各种各样的情况我们会碰到用字符串 ...

  5. oracle home 命令,$ORACLE_HOMEbin目录下所有命令的使用方法及命令详解

    求$ORACLE_HOME/bin目录下所有命令的使用方法及命令详解 如题. $ORACLE_HOME/bin目录下有很多命令,那我们平时用到的也不是太多,即使用到的那部分可能用法也不是完全能掌握,所 ...

  6. python process 函数_Python Process创建进程的2种方法详解

    前面介绍了使用 os.fork() 函数实现多进程编程,该方法最明显的缺陷就是不适用于 Windows 系统.本节将介绍一种支持 Python 在 Windows 平台上创建新进程的方法. Pytho ...

  7. 判断字符串格式_Python基础教程,第四讲,字符串详解

    本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...

  8. python二维图颜色函数_通过python改变图片特定区域的颜色详解

    通过python改变图片特定区域的颜色详解 首先让我祭出一张数学王子高斯的照片,这位印在德国马克上的神人有多牛呢? 他是近代数学的奠基人之一,与牛顿, 阿基米德并称顶级三大数学家,随便找一个编程语言的 ...

  9. linux getenv函数 get,linux之getenv putenv setenv和unsetenv详解

    1.getenv函数 头文件:#include 函数原型: char * getenv(const char* name); 函数说明:getenv()用来取得参数name环境变量的内容. 函数参数: ...

最新文章

  1. 关于为何推崇交易规范排序(CTOR)的原因
  2. 微软 Build 2017 开发者大会:Azure 与 AI 的快速发展
  3. 四十四、深入Java 的序列化和反序列化
  4. 编写高质量代码:改善Java的151个建议四(基本类型)21-30
  5. Java Vector insertElementAt()方法与示例
  6. 大规模虚拟化,舍我其谁?
  7. 早上内部资源共享讨论发言稿
  8. typedef struct LNode* list和struct LNode有什么区别?
  9. jpg/png格式的图片转换成eps格式
  10. 1125 Chain the Ropes
  11. 柿饼模组 -- 实现超声波模块测距显示界面
  12. Java发送手机短信
  13. laravel轮播图管理api
  14. iOS开发——openssl生成CSR (pkcs10) 请求证书
  15. ecshop + 主从 + memcache + memcache监控
  16. 卧操,女性私密数据曝光,原来富婆都在广西…
  17. 前端(刚刚开始自学)-html
  18. 云计算开发(二) 分布式计算与分布式系统
  19. Eclipse平台技术概述
  20. 40岁失业高级码农自曝:阿里P9,攒了1.5亿..……

热门文章

  1. promise封装小程序api请求
  2. JqGrid实现超长水平(左右)滚动条功能
  3. Windows10 LTSC无法访问 NAS共享文件夹解决方法
  4. 计算机毕业设计php的汽车俱乐部会员管理系统
  5. rk3399-ssg339c usb设备复合 总体流程
  6. 「社区说」第三期即将开启,一起来和谷歌开发者专家聊聊 Kotlin 协程
  7. Uniapp集成熊猫播放器
  8. 360清理痕迹后,系统启动变的超慢
  9. TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11
  10. 架构集二---如何从中台角度搭建直播聊天室