Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Conversione non riuscita durante la conversione del valore varchar 'semplice' nel tipo di dati int

Per evitare tale errore potresti usare CASE + ISNUMERIC per gestire gli scenari in cui non puoi convertire in int.
Cambia

CONVERT(INT, CONVERT(VARCHAR(12), a.value))

A

CONVERT(INT,
        CASE
        WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value)
        ELSE 0 END) 

Fondamentalmente questo sta dicendo che se non puoi convertirmi in int assegna un valore di 0 (nel mio esempio)

In alternativa puoi guardare questo articolo sulla creazione di una funzione personalizzata che verificherà se a.value è il numero:http://www.tek-tips.com/faqs.cfm?fid=6423