在使用floor时去掉小数点后的0



我在查询中使用了如下的select语句:

FLOOR(CAST(amount AS DECIMAL(16))/rate/100))

即使我希望我的结果是123,上面的select语句返回的却是123.0。如何删除"点0"?只显示123?

这是一个棘手的需求,因为本质上您希望将数字显示为浮点数,除非小数部分为零,在这种情况下您希望显示为整数。我们可以尝试将其转换为文本,然后替换为regex。

REGEXP_REPLACE(
FLOOR(CAST(amount AS DECIMAL(16)) / rate / 100)::text,
'.0+$',
''
)

我能想到的最简单的方法:

select ('16'::numeric/.0013/100)::int 
123

最新更新