Als u foutbericht 245 krijgt met de tekst "Conversie is mislukt bij het converteren van de varchar-waarde..." wanneer u een aaneenschakeling in SQL Server probeert uit te voeren, probeert u waarschijnlijk een tekenreeks samen te voegen en een nummer.
Als u dit doet, krijgt u een fout doordat SQL Server probeert de tekenreeks en het nummer toe te voegen in plaats van ze samen te voegen.
Om dit op te lossen, converteert u het getal naar een tekenreeks of gebruikt u een functie zoals CONCAT()
of CONCAT_WS()
om de aaneenschakeling uit te voeren.
De fout
Hier is een voorbeeld van code die de fout veroorzaakt:
SELECT 'Player ' + 456;
Resultaat:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Player ' to data type int.
SQL Server denkt dat we de twee operanden proberen toe te voegen, en loopt dus tegen een probleem aan bij het toevoegen van de tekenreeks en het nummer.
Oplossing 1
Een manier om dit probleem op te lossen is om het getal expliciet naar een string te converteren:
SELECT 'Player ' + CAST(456 AS varchar(3));
Resultaat:
Player 456
Hierdoor begrijpt SQL Server dat we proberen de operanden samen te voegen in plaats van ze toe te voegen.
Oplossing 2
Een andere manier om dit te doen is door een functie te gebruiken zoals CONCAT()
om de aaneenschakeling uit te voeren:
SELECT CONCAT('Player ', 456);
Resultaat:
Player 456
CONCAT()
is een tekenreeksfunctie en daarom begrijpt SQL Server nu dat we twee tekenreeksen willen samenvoegen in plaats van twee getallen toe te voegen.
Als alternatief kunnen we de CONCAT_WS()
. gebruiken functie, waarmee we een scheidingsteken kunnen specificeren om te gebruiken tussen de aaneengeschakelde argumenten.