Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Napraw „Konwersja nie powiodła się podczas konwersji wartości varchar” podczas próby połączenia w SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Unpivot z nazwą kolumny

  2. Jak wykryć i zapobiec nieoczekiwanemu wzrostowi bazy danych SQL Server TempDB

  3. 6 sposobów łączenia ciągu i liczby w SQL Server

  4. Jak uzyskać listę tabel bez ograniczenia klucza podstawowego we wszystkich bazach danych instancji SQL Server - SQL Server / TSQL Tutorial, część 62

  5. Co to jest @@MAX_PRECISION w programie SQL Server?