Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmentos - Backoffice RM - BI - Falha na conversão do valor varchar para o tipo de dados int no SQL


time.png 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. 
 

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _