Chcete-li se takové chybě vyhnout, můžete použít CASE
+ ISNUMERIC
pro zpracování scénářů, kdy nemůžete převést na int.
Změnit
CONVERT(INT, CONVERT(VARCHAR(12), a.value))
Komu
CONVERT(INT,
CASE
WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value)
ELSE 0 END)
V podstatě to znamená, že pokud mě nemůžete převést na int, přiřaďte hodnotu 0 (v mém příkladu)
Případně se můžete podívat na tento článek o vytvoření vlastní funkce, která zkontroluje, zda a.value
je číslo:http://www.tek-tips.com/faqs.cfm?fid=6423