Ако получите съобщение за грешка 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()
функция, която ни позволява да посочим разделител, който да използваме между конкатенираните аргументи.