Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Risolto il problema con "Conversione non riuscita durante la conversione del valore varchar" durante il tentativo di concatenazione in SQL Server

Se viene visualizzato il messaggio di errore 245 che dice "Conversione non riuscita durante la conversione del valore varchar..." quando si tenta di eseguire un'operazione di concatenazione in SQL Server, è probabile che si stia tentando di concatenare una stringa e un numero.

In questo modo si verificherà un errore, a causa del tentativo di SQL Server di aggiungere la stringa e il numero invece di concatenarli.

Per risolvere questo problema, converti il ​​numero in una stringa o usa una funzione come CONCAT() o CONCAT_WS() per eseguire la concatenazione.

L'errore

Ecco un esempio di codice che causa l'errore:

SELECT 'Player ' + 456;

Risultato:

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

SQL Server pensa che stiamo cercando di aggiungere i due operandi e quindi incontra un problema quando si tenta di aggiungere la stringa e il numero.

Soluzione 1

Un modo per risolvere questo problema è convertire esplicitamente il numero in una stringa:

SELECT 'Player ' + CAST(456 AS varchar(3));

Risultato:

Player 456

Ciò fa sì che SQL Server capisca che stiamo cercando di concatenare gli operandi invece di aggiungerli.

Soluzione 2

Un altro modo per farlo è usare una funzione come CONCAT() per eseguire la concatenazione:

SELECT CONCAT('Player ', 456);

Risultato:

Player 456

CONCAT() è una funzione di stringa, quindi SQL Server ora comprende che vogliamo concatenare due stringhe invece di aggiungere due numeri.

In alternativa, potremmo usare il CONCAT_WS() funzione, che ci consente di specificare un separatore da utilizzare tra gli argomenti concatenati.