2012-05-14 9 views
6

Esiste un modo semplice integrato di convertire NVARCHAR nel formato "$ 1.000,00" e "($ 1.000,00)" ai valori numerici rispettivamente 1000,00 e -1000,00?Trasmissione della stringa al valore monetario in SQL Server

Sto provando a farlo in SQL Server o SSIS.

Casting per il denaro mi dà l'errore

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

quando si tenta di lanciare il valore negativo, sto assumendo a causa della parentesi.

+3

Se si dispone di SQL Server 2012, è possibile utilizzare [** 'PARSE' **] (http: // msdn .microsoft.com/it-it/library/hh213316.aspx). – mellamokb

risposta

11

Questo dovrebbe fare il trucco

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

SQL Fiddle Example

E da suggerimento di @ mellamokb, se si sta utilizzando SQL 2012, è possibile utilizzare questo:

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

SQL Fiddle Example

+1

L'OP ha l'errore sul valore negativo, non sul valore positivo: http://www.sqlfiddle.com/#!3/d41d8/1152 – mellamokb

+2

Aggiornato con una soluzione per il –

+0

negativo. Non mi rendevo conto che i soldi avrebbero analizzato le parentesi così come le virgole. –

Problemi correlati