For at undgå en sådan fejl kan du bruge CASE
+ ISNUMERIC
til at håndtere scenarier, hvor du ikke kan konvertere til int.
Skift
CONVERT(INT, CONVERT(VARCHAR(12), a.value))
Til
CONVERT(INT,
CASE
WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value)
ELSE 0 END)
Grundlæggende er dette at sige, hvis du ikke kan konvertere mig til int tildele værdien 0 (i mit eksempel)
Alternativt kan du se denne artikel om oprettelse af en brugerdefineret funktion, der kontrollerer om a.value
er nummer:http://www.tek-tips.com/faqs.cfm?fid=6423