Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Die Konvertierung ist fehlgeschlagen, als der varchar-Wert 'simple' in den Datentyp int konvertiert wurde

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