Tempo aproximado para leitura: 00:03:00 min
Dúvida
Qual o significado do erro abaixo referente a conversão de campo ao executar consulta SQL?
Conversion failed when converting the varchar value 'B473' to data type int.
Ambiente
Cross Segmentos - TOTVS Backoffice (Linha RM) - RM BI - Todas as versões
Solução
Conversion failed when converting the varchar value B473 to data type int.
Significa que o SQL Server está tentando converter uma string (texto) — no caso, B473 — para um número inteiro (int), e isso falha porque B473 contém letras, o que não pode ser convertido para int.
Causas comuns desse erro:
Comparação entre coluna int e valor varchar:
SELECT * FROM tabela WHERE coluna_int = ' B473'
Aqui, o SQL Server tenta converter B473 para int, e falha.
Uso de JOIN entre colunas de tipos diferentes:
SELECT * FROM tabela1 t1
JOIN tabela2 t2 ON t1.coluna_int = t2.coluna_varchar
Se t2.coluna_varchar contém valores como B473, o SQL Server pode tentar converter isso para int.
Conversões explícitas com CAST() ou CONVERT():
SELECT CAST(' B473' AS int)
Como corrigir
Dependerá do que está tentando fazer. Seguem algumas opções:
1. Corrigir a comparação:
Se estiver comparando int com varchar, converta o lado correto:
Em vez disso (erro):
WHERE coluna_int = ' B473'
Use:
WHERE CAST(coluna_int AS varchar(10)) = ' B473'
Atenção: Isso só funciona se realmente quiser comparar um número com um texto formatado como número.
2. Evitar conversão implícita em JOINs:
Ruim (gera erro se t2.coluna_varchar tem letras):
JOIN tabela2 t2 ON t1.coluna_int = t2.coluna_varchar
Melhor:
JOIN tabela2 t2 ON CAST(t1.coluna_int AS varchar(10)) = t2.coluna_varchar
3. Verificar os dados antes de converter:
Se precisa converter valores varchar para int, certifique-se de que eles são numéricos:
Evita erro convertendo apenas quando for número
WHERE ISNUMERIC(coluna_varchar) = 1
AND CAST(coluna_varchar AS int) > 100
Atenção: ISNUMERIC() pode ser impreciso. Melhor usar TRY_CAST() no SQL Server 2012+:
Melhor forma:
WHERE TRY_CAST(coluna_varchar AS int) IS NOT NULL
Saiba mais
Acesse o link Falha na conversão do valor varchar para o tipo de dados int no SQL para mais detalhes sobre erros de conversão de dados na execução de consultas SQL.
0 Comentários