Um solche Fehler zu vermeiden, können Sie CASE
verwenden + ISNUMERIC
um Szenarien zu handhaben, in denen Sie nicht in int konvertieren können.
Ändern
CONVERT(INT, CONVERT(VARCHAR(12), a.value))
An
CONVERT(INT,
CASE
WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value)
ELSE 0 END)
Grundsätzlich bedeutet dies, wenn Sie mich nicht in int umwandeln können, weisen Sie den Wert 0 zu (in meinem Beispiel)
Alternativ können Sie sich diesen Artikel zum Erstellen einer benutzerdefinierten Funktion ansehen, die prüft, ob a.value
ist die Nummer:http://www.tek-tips.com/faqs.cfm?fid=6423