sql >> Database >  >> RDS >> Sqlserver

Fix "Conversie mislukt bij het converteren van de varchar-waarde" bij het proberen samen te voegen in SQL Server

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.


  1. Wat is er nieuw in MySQL Galera Cluster 4.0

  2. Percona XtraDB-cluster bewaken - belangrijkste meetgegevens

  3. MySQL DROP FOREIGN KEY Beperking

  4. Virtuele kolommen en functionele indexen