Om du får felmeddelande 245 som lyder "Konvertering misslyckades vid konvertering av varchar-värdet..." när du försöker utföra en sammanfogningsoperation i SQL Server, är det troligt att du försöker sammanfoga en sträng och ett nummer.
Att göra detta kommer att resultera i ett fel på grund av att SQL Server försöker lägga till strängen och numret istället för att sammanfoga dem.
För att fixa detta, konvertera antingen talet till en sträng eller använd en funktion som CONCAT()
eller CONCAT_WS()
för att utföra sammanlänkningen.
Felet
Här är ett exempel på kod som orsakar felet:
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 tror att vi försöker lägga till de två operanderna och stöter därför på ett problem när vi försöker lägga till strängen och numret.
Lösning 1
Ett sätt att lösa detta problem är att explicit konvertera numret till en sträng:
SELECT 'Player ' + CAST(456 AS varchar(3));
Resultat:
Player 456
Detta gör att SQL Server förstår att vi försöker sammanfoga operanderna istället för att lägga till dem.
Lösning 2
Ett annat sätt att göra det är att använda en funktion som CONCAT()
för att utföra sammanlänkningen:
SELECT CONCAT('Player ', 456);
Resultat:
Player 456
CONCAT()
är en strängfunktion, så SQL Server förstår nu att vi vill sammanfoga två strängar istället för att lägga till två siffror.
Alternativt kan vi använda CONCAT_WS()
funktion, som låter oss ange en separator som ska användas mellan de sammanlänkade argumenten.