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获取是设置认值,这种方式比较符合项目的目前的状况,于是采用这种方法完美解决

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

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...