mysql - 在 SQL 查询结果中使用 Format DE_DE 和无限小数位

标签 mysql sql

我有一个查询物流成本的表。
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/

相关文章:

mysql - 拆分表以获得性能?

php - 用 MySQL 替换用户名的最佳方法

sql - 抓取表格中的所有行并抓取条件为

php - MySQL 查询根据两个不同表中的值选择一个表。

mysql - 如何计算 MySQL 查询中相似行的总数

php - 无法通过主机名、IP 浏览到开发虚拟主机

php - Mysql 错误 #1064

mysql - 在 when 子句中替换 MySQL 查询中的空值

SQL - 对 3.77 亿个表的性能低下的 SELECT 查询

sql - 如何在 SQL Server 的列中查找重复数字。例如11111、33333333、5555555555、7777777等