Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Falha na conversão ao converter o valor varchar 'simples' para o tipo de dados int


Para evitar esse erro, você pode usar CASE + ISNUMERIC para lidar com cenários quando você não pode converter para int.
Alterar
CONVERT(INT, CONVERT(VARCHAR(12), a.value))

Para
CONVERT(INT,
        CASE
        WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value)
        ELSE 0 END) 

Basicamente, isso está dizendo se você não pode me converter para int atribuir valor de 0 (no meu exemplo)

Como alternativa, você pode consultar este artigo sobre como criar uma função personalizada que verificará se a.value é o número:http://www.tek-tips.com/faqs.cfm?fid=6423