摘要:本教程向您展示如何使用 MySQL FORMAT
函数在各种语言环境中格式化十进制数字。
MySQL FORMAT
函数简介
有时,您使用表达式或聚合函数(例如AVG)来计算数据库中的值,例如库存周转率、产品的平均净价和平均发票价值。
表达式的结果是具有许多小数位的小数。要格式化这些数字,请使用具有以下语法的FORMAT
函数:
FORMAT(N,D,locale);
Code language: SQL (Structured Query Language) (sql)
FORMAT
函数将数字 N 格式化为“#,###,###.##”,四舍五入到 D 位小数。它以字符串形式返回一个值。
FORMAT
函数接受三个参数:
N
是您要格式化的数字。-
D
是要四舍五入的小数位数。 - 区域设置是一个可选参数,用于确定千位分隔符和分隔符之间的分组。如果省略区域设置运算符,MySQL 将默认使用
en_US
。以下链接提供了MySQL 支持的所有区域设置名称。
MySQL FORMAT
函数示例
请参阅以下使用FORMAT
函数的示例。
SELECT FORMAT(12500.2015, 2);
Code language: SQL (Structured Query Language) (sql)
以下语句使用第二个参数为零的FORMAT
函数,因此结果没有任何小数位。
SELECT FORMAT(12500.2015, 0);
Code language: SQL (Structured Query Language) (sql)
以下语句使用de_DE
语言环境而不是en_US
语言环境:
SELECT FORMAT(12500.2015, 2,'de_DE');
Code language: SQL (Structured Query Language) (sql)
正如您在结果中看到的, de_DE
语言环境使用点 (.) 来对千位进行分组,并使用逗号 (,) 来表示小数点。
让我们看一下示例数据库中的products
表。
要计算每种产品的库存价值,请将库存数量乘以购买价格,如下所示:
SELECT
productname, quantityInStock * buyPrice stock_value
FROM
products;
Code language: SQL (Structured Query Language) (sql)
结果看起来不太好,因为有很多小数位。
为了使它更好,您可以组合两个函数: FORMAT
和CONCAT
。 FORMAT
函数将库存值格式化为四舍五入到小数点后两位。 CONCAT 函数在股票值字符串的开头添加美元符号 ($):
SELECT
productname,
CONCAT('$',
FORMAT(quantityInStock * buyPrice, 2)) stock_value
FROM
products;
Code language: SQL (Structured Query Language) (sql)
请注意, FORMAT
函数返回一个字符串值。这意味着如果你想使用ORDER BY 子句对FORMAT
函数的结果进行排序,MySQL 将使用基于字符串而不是基于数字的方式对结果进行排序。
例如,以下语句按字母顺序对股票值进行排序。
SELECT
productname,
CONCAT('$',
FORMAT(quantityInStock * buyPrice, 2)) stock_value
FROM
products
ORDER BY stock_value;
Code language: SQL (Structured Query Language) (sql)
要按数字对股票值进行排序,请将表达式放入ORDER BY
子句中,如下所示:
SELECT
productname,
CONCAT('$',
FORMAT(quantityInStock * buyPrice, 2)) stock_value
FROM
products
ORDER BY quantityInStock * buyPrice;
Code language: SQL (Structured Query Language) (sql)
在本教程中,我们向您展示了如何使用 MySQL FORMAT
函数以各种区域设置名称格式化数字。