orcale出现无效数字

今天出现了一个问题,查询数据是莫名其妙出现了无效数字,其实也并不是莫名其妙,都是有根有据的。。
orcale报错 无效数字
orcale报错 无效数字
orcale报错 无效数字
上边分别是1月、12月、11月份数据;
下边介绍一下本项目,基于项目维护,对前同事写的代码还未完全熟悉,对接其他系统获取产品发货的原始数据保存到A表内,之后需要将原始数据中对应产品发货数相加并存储到B表中,执行之后发现并不走这个方法,未发生错误,所以决定方法重构;问题来了 ,前边各月份的数据执行都正常,到了11月份给我报了无效数字,然后对照了项目中的A、B的实体类和数据库A、B表中的数据类型,A表中number使用的是字符串,需要统计发货量的表也就是B表的total_number是INTEGER类型,并且我在程序中已经做了转换,所以没有问题(顺便说下sum()函数 只要是数字就可以进行数学类型的相加不需要做转换,具体自行了解)。
又从网上看了许多前辈的解决方法,发现跟我这个完全不相同,只能自己排除
orcale报错 无效数字

where条件 get_date=?
看了一下自己程序中的方法,发现并不是这里的问题
orcale报错 无效数字

orcale报错 无效数字

并没有问题 之后确定了问题出现在了从接口中获取的原始数据上,前同事获取时并没有进行判断,发现number字段有48条为‘?’和’??’,忘记截图了(顺便说一下表内数据有十几万条,sql能力并不出众,也是瞎猫碰死耗子查了一下#和?) 所以我在这里加了一个判断if (NumberUtils.isNumber(t.getNum()) || !t.getNum().equals("") || t.getNum() != null) { tSourceDevices.add(t); }重新删除数据进行测试发现并没有起作用,所以就用了正则表达式orcale报错 无效数字

orcale报错 无效数字

再次查询11月数据orcale报错 无效数字

sql运行正常成功。

个人觉得“无效数字”就是我们常说的“数据转换异常”,一个是变成语言中的error,一个是数据库的error。

ps:(小弟经验有限,只是想做个记录,各位大神勿喷,谢谢)

相关文章: