SQL 将浮点数转换为带逗号和小数的字符型

3

我有几个浮点数,它们很大。它们在一亿左右。

我希望这个数字显示如下:123,456,789.01234

我发现如果是货币数据类型,可以使用CONVERT函数,但这并不能完全满足要求(它会省略掉一些小数位)。

我需要在左侧添加逗号,在右侧保留五位小数。

是否有任何内置的SQL函数可帮助实现此功能?或者我必须编写自定义函数?

谢谢

*** 更新

  • 我忘记提到我只是将它们显示为varchars。因此,在此之后没有任何计算。
  • 这是在SQL数据库上运行的,因此MySQL和Oracle都不适用。

你能否找到SQL Server的等效物并使用它? - SWD
这就是我正在尝试寻找的。 - Miles
2个回答

5
DECLARE @f FLOAT

SET @f = 123456789.01234

SELECT  LEFT('$' + CONVERT(VARCHAR(20), CAST(@f AS MONEY), 1), LEN(@f) - 2)

这将把数字保留两位小数以进行格式化。您可以更改LEN(@f) - 2来修改此设置。


0
如果你只是把它作为文本显示,你可以执行以下操作:
甲骨文:
select to_char(123456789.01234,'999,999,999.99999') from dual; => 123,456,789.01234

MySQL:

select format(123456789.01234,5) => 123,456,789.01234<br>

MySQL函数 rounds


四舍五入不是问题。无论如何,您都必须始终对浮点数进行舍入以进行显示,因为它无法精确存储许多小数分数。 - sleske

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接