• Oracle笔记 之 空值null的处理


    空值null出现的原因

    Oracle数据库查询出现空值null的情况一般由以下两种情况:
    1,数据表设计不完善,比如没有外键约束、没有指定默认值、没有指定不能为空等原因。
    2,使用left join、right join 或者 full join查询,未关联上的数据字段会用null值填充。

    空值null的危害

    1,破坏数据的完整性、可读性。
    2,影响sql语句的优美和性能。
    3,对索引性能的影响。
    4,特别是影响数字计算。

    空值null的处理

    最好的处理方式当然是在数据库设计和业务数据处理逻辑上一劳永逸的解决问题,但是现实中这个是很难做到的,这里简单的列举几个处理null值得函数。

    nvl函数

    语法格式:nvl(表达式,默认值)
    最常用的空值处理函数,nvl首先判断表达式是否为空,如果为空值null则用默认值替代,不为空返回表达式原值。
    select nvl(null,'123') from dual
    查询的结果为’123’,语句的意思是用字符串’123’代替null值。

    decode函数

    语法格式:decode(表达式,条件1,结果1,···条件n,结果n,默认值)
    表达式满足条件1返回结果1,···满足条件n返回结果n,如果都不满足则返回默认值。
    注意:如果没有指定默认值,则返回控制null。
    如:select decode(sign(x-y),0,'零',1,'正','负') from dual
    判断x-y的符号,如果为0返回‘‘零’’,如果为1返回‘正’,其他情况返回‘负’(包含x,y至少有一个为空值null的情况)。

    coalesce函数

    语法格式:coalesce(表达式1,····表达式n,默认值)
    依次判断表达式1,···表达式n,返回第一个非空值null的表达式,如果表达式1,···表达式n均为空则返回默认值。
    常用在关联查询按优先级取字段值时。
    如:

    Select coalesce(a.orderid, b.name, c.name, d.name, '未获取')
      From so a
      Left Join members_hot b
        On a.memberid = b.id
      Left Join members c
        On a.memberid = c.id
      Left Join members_cold id
        On a.memberid = d.id
     Where create_time >= trunc(Sysdate, 'year')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    用订单表依次关联会员表获取会员名称,优先级为members_hot ,members,members_cold,如果都没有匹配上则返回‘未获取’。

  • 相关阅读:
    ROS中关于时间的API
    Java 把多个音频拼接成一个
    Vue 之 父组件给子组件的传参的另类方式实现自定义弹窗组件
    pycharm环境下打开Django内置的数据库Sqlite出错问题解决
    ebay获取商品详情 API接口
    什么是 java 序列化?什么情况下需要序列化?
    openfeign客户端A调用服务B,服务B抛出异常时,客户端A接收的几种情况
    期货开户趋势的本质是惯性
    CMSC5707-高级人工智能之语音识别
    同城外卖跑腿小程序开发的关键步骤
  • 原文地址:https://blog.csdn.net/weixin_50648794/article/details/125877319