我有一个查询物流成本的表。
sqlfiddle
和你可以找到的表 here :
根据fiddle,表是这样定义的:
CREATE TABLE Logistics (
country TEXT,
Costs_Inbound CHAR(255),
Costs_Storage CHAR(255),
Costs_Outbound CHAR(255)
);
要查询 Costs_Outbound,我使用以下 SQL:
SELECT country,
FORMAT(sum(Costs_Outbound), 2 ,'DE_DE') Costs_Outbound
FROM Logistics
GROUP BY country WITH ROLLUP
我将 FORMAT
函数与 DE_DE
一起使用,将千位分隔符从 ","
更改为 "."
以及从 "."
到 ","
.
到目前为止一切正常。
但是,现在我希望显示无限小数位,而不是只显示 2 个小数位,所以我将查询更改为:
SELECT country,
FORMAT(sum(Costs_Outbound),'DE_DE') Costs_Outbound
FROM Logistics
GROUP BY country WITH ROLLUP
但是,现在它根本不显示任何小数位,DE_DE
格式也消失了。
你有解决这个问题的想法吗?
最佳答案
如果您没有指定将值四舍五入到的小数位数,它将采用默认的 0
,这意味着根本没有小数位。我认为您不需要像您提到的那样无限多,只是因为根据您的定义 Costs_Outbound DECIMAL(65,3)
,您最多可以有 3 个小数位。
也就是说 3 似乎是您要查找的数字。
SELECT country,
FORMAT(sum(Costs_Outbound), 3 ,'DE_DE') Costs_Outbound
FROM Logistics
GROUP BY country WITH ROLLUP
如果您需要更多(例如 255),您应该考虑更改您的列数据类型并将相同的数字放入 FORMAT(X, D, [locale])
作为 D
参数 - 见下文。此外,要摆脱尾随零,您可以使用 TRIM
:
TRIM(TRAILING '0' FROM FORMAT(sum(Costs_Outbound), 255 ,'DE_DE')) Costs_Outbound
关于mysql - 在 SQL 查询结果中使用 Format DE_DE 和无限小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51874938/