如何格式化presto中每三个整数数字用逗号分隔的数字

how to format number separated by comma for every three integer digits in presto

我想格式化一个数字,每三个整数数字用逗号分隔。例如 12345.894 -- > 12,345.894。我不知道如何格式化它。我试过一个例子,但没有成功。

format('%,.2f', 12345.894)  

以上代码将小数点四舍五入为 2 位,因此 returns 12,345.89。就我而言,我想保留小数点 12,345.894。

如果你想要 3 个十进制数,你可以使用 %,.3f 作为格式字符串:

presto> select format('%,.3f', 12345.894);
   _col0
------------
 12,345.894
(1 row)

你可以使用正则表达式:

SELECT regexp_replace(cast(123456.8943 as VARCHAR), '(\d)(?=(\d{3})+\.)', ',')
  Results:
  -------
  123,456.8943

一些解释:

首先我们转换为 varchar,因为正则表达式适用于字符串。

正则表达式实际上是说:替换您看到的任何数字 \d 仅当它在“.”之前有一个或多个 + 组 3 位数字 \d{3} 时。 (点)符号 \.。该数字被相同的数字 </code> 替换,但后面有逗号 <code>,.

例子可见here.

您可以看到更多关于正则表达式的讨论 here