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