Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Поправете „Преобразуването не бе успешно при конвертиране на стойността на varchar“ при опит за конкатенация в SQL Server

Ако получите съобщение за грешка 245, което гласи „Преобразуването не бе успешно при преобразуване на стойността на varchar...", когато се опитвате да изпълните операция на конкатенация в SQL Server, вероятно се опитвате да съедините низ и номер.

Това ще доведе до грешка, тъй като SQL Server се опитва да добави низа и числото, вместо да ги конкатенира.

За да коригирате това, или преобразувайте числото в низ, или използвайте функция като CONCAT() или CONCAT_WS() за да извършите конкатенацията.

Грешката

Ето пример за код, който причинява грешката:

SELECT 'Player ' + 456;

Резултат:

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

SQL Server смята, че се опитваме да добавим двата операнда, и затова се сблъсква с проблем, когато се опитва да добави низ и число.

Решение 1

Един от начините за решаване на този проблем е изрично преобразуване на числото в низ:

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

Резултат:

Player 456

Това кара SQL Server да разбере, че се опитваме да конкатенираме операндите, вместо да ги добавяме.

Решение 2

Друг начин да го направите е да използвате функция като CONCAT() за да извършите конкатенацията:

SELECT CONCAT('Player ', 456);

Резултат:

Player 456

CONCAT() е низова функция и така SQL Server вече разбира, че искаме да обединим два низа, вместо да добавяме две числа.

Като алтернатива можем да използваме CONCAT_WS() функция, която ни позволява да посочим разделител, който да използваме между конкатенираните аргументи.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразувайте „datetime2“ в „date“ в SQL Server (T-SQL примери)

  2. Има ли булев тип данни в Microsoft SQL Server, какъвто има в MySQL?

  3. Върнете оригиналното начало на колона за идентичност в SQL Server

  4. Вземете всички дати между две дати в SQL Server

  5. Уебинар:Проследяване на напредъка на заявките в SQL Server