dbMail将url解析连字符分隔为单词和

时间:2018-10-10 20:19:43

标签: sql reporting-services ampersand dbmail

我正在使用dbmail收集数据并发送电子邮件。作为该电子邮件的一部分,我在网址周围有一个文本,用于指向带有参数的SSRS报告的可点击链接。如果我只有一个参数,那很好。但是,如果我添加参数,则将URL传递给与号,并用“和”替换。我尝试了文本&,char(38)和文本%26,并通过将其转换为单词“ and”对其进行了相同的解析。

例如,如果网址是使用

整理的
declare @MySQL as varchar(max)='<table><tr><td>
<a href=' + char(39) + 'https://blah/Reports_SSRS/report/subfolder1/Subfolder%20Stuff/report%20Name?svcMeasure=' + cast(met.measureID as varchar(2)) + '&svcProv=' + z.abbrv + char(39) +'>' + measureTitle + '</a></td></tr></table>'

呈现的是     https:// blah / reports_ssrs / report / subfolder1 / subfolder stuff / report name?svcMeasure = 8andsvcProv = brown'>我的测量

     set @tableHTML = @tableHTML + 
 N'<table border="1" cellspacing="1" cellpadding="2"><tr><td colspan="5" bgcolor="#68cbd0"><b>Table Title</b> </td></tr>' +
 CAST((SELECT  case when rs2.myBG='a' then '#F0FFF0' else '#FFC0CB' end  as [@bgcolor], 
 td  = cast(rs2.measureUrl as xml), '',  
 'center' as 'td/@align',td = '(of '+ convert(varchar(5),rs2.myPeerCount) +')',''  
 from (blah blah blah)rs2 FOR XML PATH('tr'), TYPE) AS NVARCHAR(MAX) ) +  N'</table>';

2 个答案:

答案 0 :(得分:0)

使用&amp; html版本代替&

    declare @MySQL as varchar(max)='<table><tr><td>
    <a href=' + char(39) + 'https://blah/Reports_SSRS/report/subfolder1/Subfolder%20Stuff/report%20Name?svcMeasure=' + cast(met.measureID as varchar(2)) + '&amp;svcProv=' + z.abbrv + char(39) +'>' + measureTitle + '</a></td></tr></table>'

答案 1 :(得分:0)

我最后要工作的是创建url,但是跳过参数之间的&      

http://tada/folder/reportName?param1=blahparam2=blah

然后使用解析为html      

td=cast(replace(rs2.measureUrl,'&','and') as xml), '', 

然后在发送dbMail之前,执行此操作      

set @tableHTML=replace(@tableHTML,'param2','&param2=')

可能不是犹太洁食,但可以!