Jeśli podczas próby wykonania operacji łączenia w programie SQL Server pojawi się komunikat o błędzie Msg 245, który brzmi „Konwersja nie powiodła się podczas konwertowania wartości varchar…”, prawdopodobnie próbujesz połączyć ciąg i numer.
Spowoduje to błąd, ponieważ SQL Server będzie próbował dodać ciąg i liczbę zamiast ich łączyć.
Aby to naprawić, przekonwertuj liczbę na ciąg lub użyj funkcji takiej jak CONCAT() lub CONCAT_WS() wykonać konkatenację.
Błąd
Oto przykład kodu, który powoduje błąd:
SELECT 'Player ' + 456; Wynik:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Player ' to data type int.
SQL Server myśli, że próbujemy dodać dwa operandy, więc napotyka problem podczas próby dodania ciągu i liczby.
Rozwiązanie 1
Jednym ze sposobów rozwiązania tego problemu jest jawna konwersja liczby na łańcuch:
SELECT 'Player ' + CAST(456 AS varchar(3)); Wynik:
Player 456
Powoduje to, że SQL Server rozumie, że próbujemy połączyć operandy zamiast je dodawać.
Rozwiązanie 2
Innym sposobem na to jest użycie funkcji takiej jak CONCAT() aby wykonać konkatenację:
SELECT CONCAT('Player ', 456); Wynik:
Player 456
CONCAT() jest funkcją łańcuchową, więc SQL Server rozumie teraz, że chcemy połączyć dwa łańcuchy zamiast dodawać dwie liczby.
Alternatywnie możemy użyć CONCAT_WS() funkcja, która pozwala nam określić separator do użycia między połączonymi argumentami.