我有两个查询返回包含html标记的数据。 Sql Query 1工作正常,但Sql Query 2不返回确切的html标记, 查询2数据是嵌套的html标记。
查询1:
declare @val1 nvarchar(max)
declare @val2 nvarchar(max)
set @val1='my value one';
set @val2='my value two';
select data=( select @val1 as td, '' ,@val2 as td for xml path('tr'))
输出:
<tr><td>my value one</td><td>my value two</td></tr>
查询2:
select stuff(( select ','+'<span>'+@val1+'<span>'+@val2+'</span></span>'
for xml path('')),1,1,'') as Col1
输出:
<span>my value one<span>my value two</span></span>
期望输出:
<span>my value one<span>my value two</span></span>
答案 0 :(得分:2)
您可以使用嵌套的replace
执行此操作,如下所示:
select replace(replace(stuff(( select ','+'<span>'+@val1+'<span>'+@val2+'</span></span>'
for xml path('')),1,1,''), '<','<'),'>','>') as col1
当然,您必须记住,对于每个转义的字符序列,您需要再添加一个嵌套级别。因此,我建议您在应用程序代码中执行此操作,该代码应在标准库中具有某种HTML编码 - 解码功能。