Mysql SQL Sum返回一个假值

Mysql SQL Sum返回一个假值,mysql,sql,sum,Mysql,Sql,Sum,我的MySQL工作台中的SUM函数有问题。当我使用该函数时,它返回一个假值。 我想把这三个数字加起来: 56,03 35,59 54,35 结果应该是145,97,但实际上只有145。我尝试了以下不同的代码: SELECT SUM(price) FROM table; 这个函数返回值145 SELECT ROUND(SUM(price),2) FROM table; 第二个返回值145.00 我想知道代码出了什么问题,因为我在MySQL工作台中的另一个DB中尝试了它。还通过终端在两个数据

我的MySQL工作台中的SUM函数有问题。当我使用该函数时,它返回一个假值。 我想把这三个数字加起来:

  • 56,03
  • 35,59
  • 54,35
结果应该是145,97,但实际上只有145。我尝试了以下不同的代码:

SELECT SUM(price) FROM table;
这个函数返回值145

SELECT ROUND(SUM(price),2) FROM table;
第二个返回值145.00


我想知道代码出了什么问题,因为我在MySQL工作台中的另一个DB中尝试了它。还通过终端在两个数据库中进行了尝试。在另一个数据库中,该函数工作正常。

最好的办法是更改您的表,使其成为十进制字段

但是,如果您不能做到这一点,那么以下查询应该会得到您想要的结果:

SELECT SUM(replace(price,',', '.')) FROM tbl;

您可以在

上测试,最好的办法是更改您的表,使其成为十进制字段

但是,如果您不能做到这一点,那么以下查询应该会得到您想要的结果:

SELECT SUM(replace(price,',', '.')) FROM tbl;

您可以在上测试价格字段的格式是什么?在mysql数字中,使用
(点)作为十进制分隔符,而不是
(逗号)作为示例数据。您是否将值存储为字符串,如下所示:?是的,我将它们存储在字符串中,因为某些原因,我无法将数据存储为十进制。在另一个DB中,它可以很好地处理字符串。我的第一个猜测也是@LelioFaieta建议的。我现在没有一个mysql实例可供测试,但我不相信
mysql
甚至不支持使用逗号作为小数点分隔符(不过我可能在这方面错了)。我的猜测是,它将您的值解释为
varchar
,然后当它转换为数值时,它只转换第一个数值,直到它碰到逗号。什么是“其他DB”?价格字段的格式是什么?在mysql数字中,使用
(点)作为十进制分隔符,而不是
(逗号)作为示例数据。您是否将值存储为字符串,如下所示:?是的,我将它们存储在字符串中,因为某些原因,我无法将数据存储为十进制。在另一个DB中,它可以很好地处理字符串。我的第一个猜测也是@LelioFaieta建议的。我现在没有一个mysql实例可供测试,但我不相信
mysql
甚至不支持使用逗号作为小数点分隔符(不过我可能在这方面错了)。我的猜测是,它将您的值解释为
varchar
,然后当它转换为数值时,它只转换第一个数值,直到它碰到逗号。什么是“另一个DB”?是的,它可以工作!非常感谢。这仍然是一个解决办法,我仍然试图找出如何将我的数字存储为十进制!是的,它有效!非常感谢。这仍然是一个解决办法,我仍然试图找出如何将我的数字存储为十进制!