zoukankan      html  css  js  c++  java
  • oracle函数NVL,NVL2和NULLIF之间的区别和使用

    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

  • 相关阅读:
    Markdown语法的学习:样式
    vue项目webpack编译缓存cache-loader
    SourceTreeSetup-3.3.8安装下载
    解决el-menu基于keep-alive路由跳转菜单初始化设置
    前端在开发过程中对API返回的数据各种字段不太清晰输入网址json.cn 使用在线解析工具查看
    没有后台API接口 前端页面实现搜索框模糊查询
    控制台报错 Uncaught TypeError: $(...).tap is not a function
    node模拟数据库循环注册用户池
    深入理解Golang之interface和reflect
    单通道与双通道
  • 原文地址:https://www.cnblogs.com/xielong/p/9285147.html
Copyright © 2011-2022 走看看