获取列名称总和时得到错误的答案

时间:2019-11-12 12:52:37

标签: mysql

在获取数据库(PRICE)中的列名之一的总和时遇到问题。如果我插入1000.00和3600.00以得到它们的总和,那么我得到的是4.00而不是4600.00。但是当总数低于1000时,我会得到正确的答案。

Sample pic here

2 个答案:

答案 0 :(得分:0)

您的price_per_case列似乎是charvarchar列,而不是诸如decimal(10,2)之类的数字列。因此,它将列转换为double,但忽略了,字符之后的所有内容(并可能在转换过程中发出警告)。您可以尝试以下方法进行验证:

select '1,234' + '3,456';

您将得到4;

您应该尝试运行:

update ordered set price_per_case = replace(price_per_case, ',', ''); /* get rid of commas */

然后,您应该将此列的类型更改为decimal(10,2)或适当的精度。

答案 1 :(得分:-1)

也许您正在编程的机器具有不同的MySql Server“区域设置”(都在同一台机器上)? 在这种情况下,货币/双精度/十进制格式也不同。 为避免需要在查询结果之前/之中更改.NET方法/ sub / function中的语言环境

Threading.Thread.CurrentThread.CurrentCulture = New CultureInfo("it-IT")
Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("it-IT")

或在MySql中更改语言环境

SET lc_time_names = 'it_IT'; Here continue your query

在此示例中,我使用了意大利语区域设置