Hvis du får fejlmeddelelse 245, der lyder "Konvertering mislykkedes ved konvertering af varchar-værdien...", når du forsøger at udføre en sammenkædningsoperation i SQL Server, er det sandsynligt, at du forsøger at sammenkæde en streng og et nummer.
Hvis du gør dette, vil der opstå en fejl, fordi SQL Server forsøger at tilføje strengen og nummeret i stedet for at sammenkæde dem.
For at rette dette skal du enten konvertere tallet til en streng eller bruge en funktion som CONCAT()
eller CONCAT_WS()
for at udføre sammenkædningen.
Fejlen
Her er et eksempel på kode, der forårsager fejlen:
SELECT 'Player ' + 456;
Resultat:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Player ' to data type int.
SQL Server mener, at vi forsøger at tilføje de to operander, og løber derfor ind i et problem, når vi forsøger at tilføje strengen og nummeret.
Løsning 1
En måde at løse dette problem på er eksplicit at konvertere tallet til en streng:
SELECT 'Player ' + CAST(456 AS varchar(3));
Resultat:
Player 456
Dette får SQL Server til at forstå, at vi forsøger at sammenkæde operanderne i stedet for at tilføje dem.
Løsning 2
En anden måde at gøre det på er at bruge en funktion som CONCAT()
for at udføre sammenkædningen:
SELECT CONCAT('Player ', 456);
Resultat:
Player 456
CONCAT()
er en strengfunktion, og så forstår SQL Server nu, at vi ønsker at sammenkæde to strenge i stedet for at tilføje to tal.
Alternativt kunne vi bruge CONCAT_WS()
funktion, som giver os mulighed for at angive en separator, der skal bruges mellem de sammenkædede argumenter.