2012-05-14 14 views
6

¿Existe una manera incorporada simple de convertir NVARCHARs en el formato "$ 1,000.00" y "($ 1,000.00)" a los valores numéricos 1000.00 y -1000.00 respectivamente?Casting String to Money Value en SQL Server

Estoy tratando de hacer esto en SQL Server o SSIS.

La conversión a dinero me da el error

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

cuando se intenta convertir el valor negativo, estoy suponiendo debido al paréntesis.

+3

Si tiene SQL Server 2012, puede usar [** 'PARSE' **] (http: // msdn) .microsoft.com/es-us/library/hh213316.aspx) función. – mellamokb

Respuesta

11

Esto debería hacer el truco

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

SQL Fiddle Example

Y por sugerencia de @ mellamokb, si está utilizando SQL 2012, puede utilizar esto:

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

SQL Fiddle Example

+1

El OP tiene el error en el valor negativo, no el valor positivo: http://www.sqlfiddle.com/#!3/d41d8/1152 – mellamokb

+2

Actualizado con una solución para –

+0

negativo. No me di cuenta de que el dinero analizaría los paréntesis y las comas. –