正在紧急对应一个bug现象: 统计数据库中的某一列的和,假设这一列为 column1
select sum(column1) from table where ...
问题:当累计的和超过15位时,sum出来的值不准确。比如说实际应该是9999999999999999
sum出来的结果是 1.0e17,也就是说多增加了1.
急求在sql中的解决方案。
谢谢。
select sum(column1) from table where ...
问题:当累计的和超过15位时,sum出来的值不准确。比如说实际应该是9999999999999999
sum出来的结果是 1.0e17,也就是说多增加了1.
急求在sql中的解决方案。
谢谢。
scott@ORCL10G> column sum_sal for 999999999999999
scott@ORCL10G> select sum(sal)+99999999999999 as sum_sal from emp; SUM_SAL
----------------
100000000028674已选择 1 行。scott@ORCL10G>
scott@ORCL10G> select sum(sal)+99999999999999 as sum_sal from emp; SUM_SAL
--------------------
100000000028674.000已选择 1 行。scott@ORCL10G>
精度问题,自动进位
select cast(sum(column1) as number(16)) from table where
这个怎么样你定义的长度才16位,包含几位小数?
cast效率比to_number好
我试下 cast(sum(column1) as number(20,2)) 这个。
to_char(sum(column1),99999999999999999.99)
自己修正小数点前后的'9'的位数
不过 to_char(sum(column1),99999999999999999.99) 个好像好使,就不知道会有没有什么特殊情况。
输出的是字符型数据
可能会包含空格,不要空格的话
to_char外加个trim函数过滤掉
to_char(sum(column1),'9999999999999999') .
还有一个问题就是 sum计算出来的值其实是对的,只不过是 它进行了隐式转换,可以这样认为吗,谢谢大家,一会马上结贴。