提问人:Hamed Tamadon 提问时间:8/6/2023 最后编辑:Erwin BrandstetterHamed Tamadon 更新时间:8/7/2023 访问量:38
投射以显示合适的结果
Cast to show a suitable result
问:
我有一个查询返回以下值之一:
0.00 ,
0.05 ,
0.10
但是我想要的结果如下,而不是上面的项目:
0 ,
0.05 ,
0.1
哪种铸造或圆形适合达到此结果?
答:
0赞
Erwin Brandstetter
8/7/2023
#1
to_char(n, 'FM90.99')
to_char(
) 函数接受任何数字输入(日期时间类型也有重载变体)并根据给定的模板模式返回字符串 (type )。用于代表。text
如果您的输入可以溢出,则相应地扩展模式。为:numeric(2,2)
numeric(9,6)
to_char(n, 'FM999999990.999999')
数字输入的模板模式修饰符是这样做的:FM
填充模式(取消尾随零和填充空格)
可悲的是,它错过了一个点:没有有效小数的数字保留了一个悬空的点:“0.”或“123”。如果这是不可接受的,请使用以下方法之一:
rtrim(to_char(n, 'FM90.99'), '.')
CASE n = 0 THEN '0' ELSE to_char(n, 'FM90.99') END
to_char(n, 'FM90.99')::numeric
n::float8
n::real
每种方法都有优点和缺点,对于极端情况,结果可能会略有不同(甚至失败)。最值得注意的是,只有前两名返回......text
下一个:在表达时使用强制转换
评论
text
decimal