在查询某一列的的时候,让这个字段乘了一个数,结果查询出来多了好多999999
SELECT * FROM 进项发票信息
select 金额*10 from 进项发票信息;
怎么才能正常显示查询后的结果
捂脸,为什么要在SQL 里面进行计算?非必要还是在程序里进行吧,你这样不仅可能字段数值过大,还把索引整失效了,SQL 执行都变慢了
没有乘10的原始数据是什么
select 金额*10 from 进项发票信息;
金额的这个字段的类型是什么? 最大值是多少,乘以10是否超出对应的数据类型的存储范围呢
是不是超过字段设置的最大长度了
select 金额10 from 进项发票信息;
这样查询的结果,是把“进项发票信息”表中的字段“金额” ,所有值都变大了10倍,已经超出改字段数据类型的存储范围了
把10去掉呢
1.建议不要在sql语句中进行运算
2.建议在查询语句中加上检索条件,检索条件的字段尽量有索引,这样能够有效提高查询效率
3.如果非要在sql中进行计算,尽量在查询条件中过滤出值是null和空的数据
你这个看不出来什么问题。
最好把金额这一列的原始值也打印出来,这样对比一下,大家更好帮你排查原因。
select 金额, 金额*10 from 进项发票信息;
一方面看下是否超出数据类型的最大取值范围了,另一方面看下设计的长度范围
精度问题,你把乘后的数据的精度处理一下就好了
先把数据用string类型查出来
mysql: select 金额+'' from 进项发票信息;
oracle: select to_char(金额) from 进项发票信息;
看看数据是否正确,如果不正确再进行下一步判断
估计超过数据类型的最大值了
是不是数据溢出 了
改这样就行了:
select (金额*10) from 进项发票信息;
如下两图:
可能是超过字段的最大长度了,初始值不运算结果是否正常