在SQL Server中将字符串转换为货币值

8

有没有一种简单的内置方法可以将格式为“$1,000.00”和“($1,000.00)”的NVARCHAR转换为数值1000.00和-1000.00?

我要在SQL Server或SSIS中尝试实现这个功能。

转换为MONEY会导致错误。

"Cannot convert a char value to money. The char value has incorrect syntax.".

尝试将负值转换时,我假设是因为括号的原因。

4
如果您使用的是 SQL Server 2012,则可以使用PARSE函数。 - mellamokb
1个回答

17

这应该能解决问题

SELECT   '$1,000.00'
        ,CAST('$1,000.00' AS MONEY)
        ,CAST(REPLACE(REPLACE('($1,000.00)', '(', '-'), ')','') AS MONEY)

SQL Fiddle 示例

根据 @mellamokb 的建议,如果您使用的是 SQL 2012,则可以使用以下内容:

SELECT PARSE('($1000.00)' AS MONEY)

SQL Fiddle示例


1
OP在负值上出现了错误,而不是正值:http://www.sqlfiddle.com/#!3/d41d8/1152 - mellamokb
2
已更新,包含负数解决方案。 - Tom Halladay
很好。我没想到金钱会解析括号和逗号。 - Gordon Linoff

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