首页 > 解决方案 > 如何为presto中的每三个整数数字格式化以逗号分隔的数字

问题描述

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

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

上面的代码会将十进制四舍五入为 2 位,因此返回 12,345.89。就我而言,我想保留小数点 12,345.894。

标签: formatprestocommatrino

解决方案


您可以使用正则表达式

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

一些解释:

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

正则表达式实际上是说:只有在“。”之前\d有一组或多+组 3 位数字时,才替换您看到的任何数字。\d{3}(点)符号\.。数字替换为相同的数字$1,但后面有逗号,

这个例子可以在这里看到。

你可以在这里看到更多关于正则表达式的讨论。


推荐阅读