MySQL FORMAT Function

摘要:本教程向您展示如何使用 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)

试试看

MySQL FORMAT example

以下语句使用第二个参数为零的FORMAT函数,因此结果没有任何小数位。

SELECT FORMAT(12500.2015, 0);Code language: SQL (Structured Query Language) (sql)

试试看

MySQL FORMAT zero decimal places

以下语句使用de_DE语言环境而不是en_US语言环境:

SELECT FORMAT(12500.2015, 2,'de_DE');Code language: SQL (Structured Query Language) (sql)

试试看

MySQL FORMAT de_DE locale

正如您在结果中看到的, de_DE语言环境使用点 (.) 来对千位进行分组,并使用逗号 (,) 来表示小数点。

让我们看一下示例数据库中的products表。

products table

要计算每种产品的库存价值,请将库存数量乘以购买价格,如下所示:

SELECT 
    productname, quantityInStock * buyPrice stock_value
FROM
    products;Code language: SQL (Structured Query Language) (sql)

试试看

MySQL FORMAT decimal places

结果看起来不太好,因为有很多小数位。

为了使它更好,您可以组合两个函数: FORMATCONCATFORMAT函数将库存值格式化为四舍五入到小数点后两位。 CONCAT 函数在股票值字符串的开头添加美元符号 ($):

SELECT 
    productname,
    CONCAT('$',
            FORMAT(quantityInStock * buyPrice, 2)) stock_value
FROM
    products;Code language: SQL (Structured Query Language) (sql)

试试看

MySQL FORMAT USD sign

请注意, 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)

试试看

MySQL FORMAT with ORDER BY

要按数字对股票值进行排序,请将表达式放入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 with correct ORDER BY

在本教程中,我们向您展示了如何使用 MySQL FORMAT函数以各种区域设置名称格式化数字。

本教程有帮助吗?