微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oracle中Null字段的计算问题

最近在修改项目中一个统计的bug,统计出的钱数不对,因为不是自己开发的模块,经过分析流程找到了统计sql

  sql片段:sum(f_msmoney)+sum(f_fkmoney) as total,

  上面这段是计算钱数的sql,看上去没有什么问题,但是sql查出来的total值居然是null,然后开始检查表结构和数据,发现两个字段类型为VARCHAR2且有一个有值,另一个字段为空。起初先验证是不是数据类型不是NUMBER不能进行计算,但很快我的想法被否认了,我用to_number对字段进行转换,查询结构依旧为null。接下来就开始验证是不是null在作怪,结果是肯定,当两个值都不为空是可以计算出结果,当有一个是null时,sum()后再相加,最终结果也是null。

OK,问题找到,开始解决问题。

其实解决这个问题的办法也不少,下来一个一个来分析:

  第一种方案,修改数据库字段类型,设置认值。但是项目已处于后期测试阶段,贸然修改数据结构不太妥,如果是项目初期可以考虑。

第二种方案,庆幸的是oracle有nvl(,0)这个函数,具体作用就是判断字段是不是,如果是就返回传入的认值,其实是也就是在sql获取是设置认值,这种方式比较符合项目的目前的状况,于是采用这种方法完美解决

  好了,一个小问题已经解决在这里记录下,看到问题的同学有更好的方法欢迎留言分享

原文地址:https://www.jb51.cc/oracle/212280.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐