FORMAT_NUMBER

功能概述

把数值格式化为带千分位分隔符的字符串,可以指定保留的小数位数,也可以用

#
#
、
0
0
、
%
%
等模式符自定义格式。适合报表展示金额、数量、百分比。

只需要控制小数位、不需要千分位时用 ROUND;需要补零、加前缀等通用格式化时用 FORMAT。

语法

FORMAT_NUMBER(<number>, <decimals>) FORMAT_NUMBER(<number>, <pattern>)

参数说明

  • <number>
    <number>
    :数值类型,支持 TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL。

  • <decimals>
    <decimals>
    :INT 类型,保留的小数位数,结果总是带千分位分隔符。为负数时返回 NULL。

  • <pattern>
    <pattern>
    :STRING 类型,格式模式,语法同 Java
    DecimalFormat
    DecimalFormat
    :

    • #
      #
      :一位数字,没有时不显示
    • 0
      0
      :一位数字,没有时补 0
    • ,
      ,
      :千分位分隔符
    • .
      .
      :小数点
    • %
      %
      :乘以 100 并显示百分号
    • 空字符串
      ''
      ''
      :等价于保留 0 位小数并带千分位

舍入规则:

任一参数为 NULL 时返回 NULL。

使用示例

指定小数位数:

SELECT format_number(12831273.23481, 3) AS r1, format_number(12831273.83421, 0) AS r2, format_number(-12332.123456, 2) AS r3, format_number(4, 3) AS r4;

r1r2r3r4
12,831,273.23512,831,274-12,332.124.000

使用格式模式:

SELECT format_number(12332.123456, '#,##0.00') AS thousands, format_number(12332.123456, '##.###') AS no_sep, format_number(0.255D, '#0.0%') AS pct;

thousandsno_seppct
12,332.1212332.12325.5%

银行家舍入:

SELECT format_number(0.5D, 0) AS a, format_number(1.5D, 0) AS b, format_number(2.5D, 0) AS c, format_number(3.5D, 0) AS d;

abcd
0224

在报表中格式化金额:

SELECT region, format_number(sum(amount), 2) AS total FROM VALUES ('华东', 1234567.891), ('华东', 100000), ('华南', 98765.4) AS t(region, amount) GROUP BY region ORDER BY region;

regiontotal
华东1,334,567.89
华南98,765.40

注意事项

  • 返回值是字符串,不能再参与数值计算或数值排序。排序请用原始数值列。
  • 舍入方式是 HALF_EVEN。
  • <decimals>
    <decimals>
    为负数时返回 NULL。

相关文档

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询