Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Behebung „Konvertierung fehlgeschlagen beim Konvertieren des Varchar-Werts“ beim Versuch, in SQL Server zu verketten

Wenn Sie die Fehlermeldung „Conversion failed when converting the varchar value…“ erhalten, wenn Sie versuchen, einen Verkettungsvorgang in SQL Server durchzuführen, versuchen Sie wahrscheinlich, eine Zeichenfolge zu verketten und eine Zahl.

Dies führt zu einem Fehler, da SQL Server versucht, die Zeichenfolge und die Zahl hinzuzufügen, anstatt sie zu verketten.

Um dies zu beheben, wandeln Sie die Zahl entweder in einen String um oder verwenden Sie eine Funktion wie CONCAT() oder CONCAT_WS() um die Verkettung durchzuführen.

Der Fehler

Hier ist ein Codebeispiel, das den Fehler verursacht:

SELECT 'Player ' + 456;

Ergebnis:

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

SQL Server denkt, dass wir versuchen, die beiden Operanden zu addieren, und stößt daher auf ein Problem, wenn wir versuchen, die Zeichenfolge und die Zahl hinzuzufügen.

Lösung 1

Eine Möglichkeit, dieses Problem zu lösen, besteht darin, die Zahl explizit in einen String umzuwandeln:

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

Ergebnis:

Player 456

Dadurch versteht SQL Server, dass wir versuchen, die Operanden zu verketten, anstatt sie hinzuzufügen.

Lösung 2

Eine andere Möglichkeit besteht darin, eine Funktion wie CONCAT() zu verwenden um die Verkettung durchzuführen:

SELECT CONCAT('Player ', 456);

Ergebnis:

Player 456

CONCAT() ist eine Zeichenfolgenfunktion, und daher versteht SQL Server jetzt, dass wir zwei Zeichenfolgen verketten wollen, anstatt zwei Zahlen hinzuzufügen.

Alternativ könnten wir den CONCAT_WS() verwenden Funktion, mit der wir ein Trennzeichen angeben können, das zwischen den verketteten Argumenten verwendet werden soll.