Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

La conversion a échoué lors de la conversion de la valeur varchar 'simple, ' en type de données int

Afin d'éviter une telle erreur, vous pouvez utiliser CASE + ISNUMERIC pour gérer les scénarios lorsque vous ne pouvez pas convertir en int.
Modifier

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

À

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

Fondamentalement, cela signifie que si vous ne pouvez pas me convertir en int, attribuez la valeur 0 (dans mon exemple)

Vous pouvez également consulter cet article sur la création d'une fonction personnalisée qui vérifiera si a.value est le numéro :http://www.tek-tips.com/faqs.cfm?fid=6423