我需要这种类型的十进制数字格式,因为我所显示的是指金钱。SP SQL Server 2019我需要从这25,000.00美元变成25,000,00美元。有人能帮我吗?
REPLACE(REPLACE(CONVERT(varchar,CAST(@MontoFinal AS money),1),'.',','),',','.') = 117.692.05
0pizxfdo1#
格式化通常最好由UI来处理,但有时由于各种原因必须在数据库中进行。有时必须遵守命令,如果必须在数据库中进行,也可以完成。查看所需的输出,您希望句点作为分隔符,逗号作为小数点,还希望美元符号。幸运的是,阿根廷就是这样格式化货币的,因此只需使用内置的FORMAT函数。阿根廷的文化字符串是es-AR,因此可以将其与FORMAT一起使用:
FORMAT
es-AR
SELECT FORMAT(123456789, 'C', 'es-AR') AS [Example];
这产生:| 示例|| - ------|| 123,456,789,00美元|如果你的数据是一个数字,你就完成了。如果它像你的例子一样存储为文本,你可以像你刚才做的那样CAST它:
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替换为.:
REPLACE
.
_
SELECT REPLACE(REPLACE(REPLACE('$25,000.00', '.', '_'), ',', '.'), '_', ',') AS [Example];
它再次给出了您想要的输出:| 示例|| - ------|| 两千五百万美元|如果您的数据格式不一致,无法以正确的逗号和小数点开头,那么FORMAT方法可能会更适合您。
1条答案
按热度按时间0pizxfdo1#
格式化通常最好由UI来处理,但有时由于各种原因必须在数据库中进行。有时必须遵守命令,如果必须在数据库中进行,也可以完成。
查看所需的输出,您希望句点作为分隔符,逗号作为小数点,还希望美元符号。幸运的是,阿根廷就是这样格式化货币的,因此只需使用内置的
FORMAT
函数。阿根廷的文化字符串是es-AR
,因此可以将其与FORMAT
一起使用:这产生:
| 示例|
| - ------|
| 123,456,789,00美元|
如果你的数据是一个数字,你就完成了。如果它像你的例子一样存储为文本,你可以像你刚才做的那样
CAST
它:这将提供您所需的输出:
| 示例|
| - ------|
| 25,000,00美元|
最后要注意的是,这个场景中的
FORMAT
函数在美元符号和前导数字之间放置了一个空格--如果不需要这个空格,可以将其删除:这就给了你:
| 示例|
| - ------|
| 两千五百万美元|
还有其他方法可以得到类似的结果,但这可能是最简单的(我说的是最简单,我没有说任何关于性能的内容)。
如果你的数据实际上是文本,并且已经有了正确的逗号和小数点以及美元符号,你可以使用
REPLACE
--首先将.
替换为某物(我使用了_
),然后将REPLACE
替换为.
,最后将REPLACE
替换为.
:它再次给出了您想要的输出:
| 示例|
| - ------|
| 两千五百万美元|
如果您的数据格式不一致,无法以正确的逗号和小数点开头,那么
FORMAT
方法可能会更适合您。