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.