За да избегнете такава грешка, можете да използвате CASE
+ ISNUMERIC
за обработка на сценарии, когато не можете да конвертирате в int.
Промяна
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)
По принцип това означава, че не можете да ме преобразувате в int, присвоявайки стойност от 0 (в моя пример)
Като алтернатива можете да разгледате тази статия за създаване на персонализирана функция, която ще проверява дали a.value
е номер:http://www.tek-tips.com/faqs.cfm?fid=6423