pau*_*au. 7 sql t-sql database sql-server
我需要替换标记{URL}:
DECLARE @PageUrl varchar(200)
DECLARE @Body varchar(MAX)
SET @PageUrl = 'http://www.website.com/site1/site2/pageName.asxp?rid=1232'
SET @Body = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed luctus,
{URL} enim nec posuere volutpat, neque dui volutpat turpis. '
SET @Body = REPLACE(@Body,'{Url}', CONVERT(varchar,@PageUrl))
PRINT @Body
Run Code Online (Sandbox Code Playgroud)
我的预期结果是:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed luctus,
http://www.website.com/site1/site2/pageName.asxp?rid=1232 enim nec posuere volutpat, neque dui volutpat turpis.
Run Code Online (Sandbox Code Playgroud)
打印结果如下:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed luctus,
http://www.website.com/site1/s enim nec posuere volutpat, neque dui volutpat turpis.
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,替换功能会切断其31位的网址字符串...
我做错了什么?
Gab*_*oli 12
问题不在于replace方法,而是convert方法..
您需要指定转换类型的长度
SET @Body = REPLACE(@Body,'{Url}', CONVERT(varchar(200),@PageUrl))
Run Code Online (Sandbox Code Playgroud)
或者因为它已经被定义为varchar,所以只需使用变量..
SET @Body = REPLACE(@Body,'{Url}', @PageUrl)
Run Code Online (Sandbox Code Playgroud)
如果你看一下char/vachrar页面
如果未在数据定义或变量声明语句中指定n,则默认长度为1.如果在使用CAST和CONVERT函数时未指定n,则默认长度为30.