如何格式化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。
我想格式化一个数字,每三个整数数字用逗号分隔。例如 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。