oracle中Null字段的计算问题

前端之家收集整理的这篇文章主要介绍了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.f2er.com/oracle/212280.html

猜你在找的Oracle相关文章