从十进制到货币的格式SQL Server 2019

dxpyg8gm  于 2023-02-03  发布在  SQL Server
关注(0)|答案(1)|浏览(129)

我需要这种类型的十进制数字格式,因为我所显示的是指金钱。SP SQL Server 2019
我需要从这25,000.00美元变成25,000,00美元。
有人能帮我吗?

REPLACE(REPLACE(CONVERT(varchar,CAST(@MontoFinal AS money),1),'.',','),',','.') = 117.692.05
0pizxfdo

0pizxfdo1#

格式化通常最好由UI来处理,但有时由于各种原因必须在数据库中进行。有时必须遵守命令,如果必须在数据库中进行,也可以完成。
查看所需的输出,您希望句点作为分隔符,逗号作为小数点,还希望美元符号。幸运的是,阿根廷就是这样格式化货币的,因此只需使用内置的FORMAT函数。阿根廷的文化字符串是es-AR,因此可以将其与FORMAT一起使用:

SELECT FORMAT(123456789, 'C', 'es-AR') AS [Example];

这产生:
| 示例|
| - ------|
| 123,456,789,00美元|
如果你的数据是一个数字,你就完成了。如果它像你的例子一样存储为文本,你可以像你刚才做的那样CAST它:

SELECT FORMAT(CAST('$25,000.00' AS MONEY), 'C', 'es-AR') AS [Example];

这将提供您所需的输出:
| 示例|
| - ------|
| 25,000,00美元|
最后要注意的是,这个场景中的FORMAT函数在美元符号和前导数字之间放置了一个空格--如果不需要这个空格,可以将其删除:

SELECT REPLACE(FORMAT(CAST('$25,000.00' AS MONEY), 'C', 'es-AR'), ' ', '') AS [Example];

这就给了你:
| 示例|
| - ------|
| 两千五百万美元|
还有其他方法可以得到类似的结果,但这可能是最简单的(我说的是最简单,我没有说任何关于性能的内容)。
如果你的数据实际上是文本,并且已经有了正确的逗号和小数点以及美元符号,你可以使用REPLACE--首先将.替换为某物(我使用了_),然后将REPLACE替换为.,最后将REPLACE替换为.

SELECT REPLACE(REPLACE(REPLACE('$25,000.00', '.', '_'), ',', '.'), '_', ',') AS [Example];

它再次给出了您想要的输出:
| 示例|
| - ------|
| 两千五百万美元|
如果您的数据格式不一致,无法以正确的逗号和小数点开头,那么FORMAT方法可能会更适合您。

相关问题