Проблема не в методе replace
, а в методе convert
.
Вам нужно либо указать длину преобразованного типа
SET @Body = REPLACE(@Body,'{Url}', CONVERT(varchar(200),@PageUrl))
или поскольку он уже определен как varchar, просто используйте переменную ..
SET @Body = REPLACE(@Body,'{Url}', @PageUrl)
Если вы посмотрите на страницу char / vachrar
Когда n не указано в данных
определение или объявление переменной
утверждение, длина по умолчанию равна 1.
Когда n не указано при использовании
Функции CAST и CONVERT,
длина по умолчанию 30 .