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

Corrige “Falha na conversão ao converter o valor varchar” ao tentar concatenar no SQL Server


Se você receber a mensagem de erro 245 que diz “Falha na conversão ao converter o valor varchar…” ao tentar realizar uma operação de concatenação no SQL Server, é provável que você esteja tentando concatenar uma string e um número.

Fazer isso resultará em um erro, devido ao SQL Server tentar adicionar a string e o número em vez de concatená-los.

Para corrigir isso, converta o número em uma string ou use uma função como CONCAT() ou CONCAT_WS() para realizar a concatenação.

O erro


Aqui está um exemplo de código que causa o erro:
SELECT 'Player ' + 456;

Resultado:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Player ' to data type int.

O SQL Server pensa que estamos tentando adicionar os dois operandos e, portanto, se depara com um problema ao tentar adicionar a string e o número.

Solução 1


Uma maneira de resolver esse problema é converter explicitamente o número em uma string:
SELECT 'Player ' + CAST(456 AS varchar(3));

Resultado:
Player 456

Isso faz com que o SQL Server entenda que estamos tentando concatenar os operandos em vez de adicioná-los.

Solução 2


Outra maneira de fazer isso é usar uma função como CONCAT() para realizar a concatenação:
SELECT CONCAT('Player ', 456);

Resultado:
Player 456

CONCAT() é uma função de string e, portanto, o SQL Server agora entende que queremos concatenar duas strings em vez de adicionar dois números.

Alternativamente, podemos usar o CONCAT_WS() função, que nos permite especificar um separador para usar entre os argumentos concatenados.