在获取数据库(PRICE)中的列名之一的总和时遇到问题。如果我插入1000.00和3600.00以得到它们的总和,那么我得到的是4.00而不是4600.00。但是当总数低于1000时,我会得到正确的答案。
答案 0 :(得分:0)
您的price_per_case
列似乎是char
或varchar
列,而不是诸如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
在此示例中,我使用了意大利语区域设置