7

是否有一种简单的内置方法可以将格式为“$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

1 回答 1

15

这应该可以解决问题

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

SQL 小提琴示例

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

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

SQL 小提琴示例

于 2012-05-14T20:10:43.640 回答