将MySQL结果格式化为货币

问题描述

将结果包含美元符号的最佳方法是什么?

我使用的是类似CONCAT('£',SUM(Deposits)) AS TotalDeposits的东西,但似乎不起作用。

enter image description here

解决方法

MySQL以FORMAT() function的形式进行数字格式化。

SET @amount := 123456.7890;
SELECT CONCAT('$',FORMAT(@amount,2,'en_US')),CONCAT('€','de_DE'));

为您提供美国和德国格式。您必须自己输入货币符号; MySQL的语言环境处理功能不适合您。

| ------------------------------------- | ------------------------------------- |
| $123,456.79                           | €123.456,79                           |
| ------------------------------------- | ------------------------------------- |

如果您要处理别人的钱,则可能要使用DECIMAL(20,2)之类的数据类型,而不要使用FLOATDOUBLE这样的数据类型,这样就不会浮动- SUM()之类的聚合函数中的点式算术舍入错误。

这就是全部:明智的程序员通常在应用程序而不是数据库中处理这种格式,正如@ADyson在其评论中指出的那样。那是因为应用程序编程语言比数据库具有更完整的语言环境处理(无论如何,MySQL),并且您可以更好地控制它。