热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle函数NVL,NVL2和NULLIF之间的区别和使用

oracle用这么几个函数,可以帮助我们解决数据上null或0的处理1、NVL()函数1.1)介绍:NVL(expr1,expr2),若expr1为null,返回expr2;不为n

oracle用这么几个函数,可以帮助我们解决数据上null或0的处理

1、NVL()函数

 1.1)介绍:NVL(expr1,expr2),若expr1为null, 返回expr2; 不为null,返回expr1。  注意:两者类型要一致

 1.2)用法:

--expr1为空,返回expr2,结果:‘未知‘--
select NVL(null,未知) SexType from dual;
--expr1不为空,返回expr1, 结果:1 --
select NVL(1,2) SexType from dual;

 1.3)实际应用:

如:我们查询表数据出现这种结果,某个字段若为null,返回0

--未加函数时情况 --
select A.UseFlag 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

技术分享图片

若字段不为null,直接返回字段本身

--加函数时情况,要求(field 为null,返回0 ;field 不为null,返回本身) --
select NVL(A.UseFlag,0‘) 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

 技术分享图片

 

2、NVL2 函数

2.1)介绍:NVL2 (expr1, expr2, expr3),若expr1不为NULL,返回expr2 ;为NULL,返回expr3。注意:expr2 和expr3 类型不同的话,expr3 会转换为expr2 的类型

2.2)用法:

--不为null时,返回expr2 ,结果:1
select NVL2(0,1,2) from dual;
--为null时,返回expr3 ,结果:2
select NVL2(null,1,2) from dual;

2.3)实际应用

将查询结果中字段若为null,返回0

--未加函数时情况 --
select A.UseFlag 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

技术分享图片

若字段不为null,直接返回字段本身

--应用到实际查询中,要求(field 为null,返回0; field 不为null,返回本身)
select NVL2(A.UseFlag,A.UseFlag,0) 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

技术分享图片

 

3、NULLIF函数

3.1)介绍:NULLIF (expr1, expr2),若expr1和expr2相等,返回NULL;不相等,等返回expr1

3.2)用法:

--相等时,返回结果: null --
select NULLIF(1,1) from dual;
--不相等时,返回结果: 1 --
select NULLIF(1,2) from dual;

 3.3)实际应用

 将查询结果中字段为‘0001/1/1’,返回null

--未加函数查询结果 要求(将日期类型默认‘0001/1/1‘,改成null,不相等,返回本身日期)---
select A.RECEIVEDATE 收货日期,A.NAME 单据名称 from Dxc_Receive_Notice A

技术分享图片

若字段不为‘‘0001/1/1’,返回字段本身

--添加函数查询结果,要求(将日期类型默认‘0001/1/1‘,改成null,不相等,返回本身日期)--
select NULLIF(A.RECEIVEDATE,TO_DATE(0001/1/1,yyyy-mm-dd hh24:mi:ss)) 收货日期,A.NAME 单据名称 from Dxc_Receive_Notice A

技术分享图片

 


推荐阅读
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 本篇文章介绍如何将两个分别表示整数的链表进行相加,并生成一个新的链表。每个链表节点包含0到9的数值,如9-3-7和6-3相加得到1-0-0-0。通过反向处理链表、逐位相加并处理进位,最终再将结果链表反向,即可完成计算。 ... [详细]
  • CentOS 系统管理基础
    本文介绍了如何在 CentOS 中查询系统版本、内核版本、位数以及磁盘分区的相关知识。通过这些命令,用户可以快速了解系统的配置和磁盘结构。 ... [详细]
  • 本文详细探讨了 PHP 中 method_exists() 和 is_callable() 函数的区别,帮助开发者更好地理解和使用这两个函数。文章不仅解释了它们的功能差异,还提供了代码示例和应用场景的分析。 ... [详细]
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细介绍了一种高效的算法——线性筛法,用于快速筛选出一定范围内的所有素数。通过该方法,可以显著提高求解素数问题的效率。 ... [详细]
  • 本文详细介绍了get和set方法的作用及其在编程中的实现方式,同时探讨了点语法的使用场景。通过具体示例,解释了属性声明与合成存取方法的概念,并补充了相关操作的最佳实践。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • Vue 开发与调试工具指南
    本文介绍了如何使用 Vue 调试工具,包括克隆仓库、安装依赖包、构建项目以及在 Chrome 浏览器中加载扩展的详细步骤。 ... [详细]
  • Java中的基本数据类型与包装类解析
    本文探讨了Java编程语言中的8种基本数据类型及其对应的包装类。通过分析这些数据类型的特性和使用场景,以及自动拆装箱机制的实现原理,帮助开发者更好地理解和应用这些概念。 ... [详细]
  • 本文详细探讨了Java中的包管理机制,包括默认包的使用和自定义包名的创建方法。通过实际操作,帮助开发者更好地理解和应用包管理。 ... [详细]
  • 本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ... [详细]
author-avatar
浪迹天涯嶵_罚
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有