You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中HTML标签转义异常问题求助

解决SQL中FOR XML PATH导致HTML标签二次转义的问题

这个问题我之前处理过好几次,本质是FOR XML PATH默认的自动转义机制在搞事情!你当前的写法里,子查询生成的HTML标签先被转义了一次(比如<变成&lt;),然后外层的字符串拼接又触发了二次转义,最终就出现了&amp;lt;这种双重转义的结果。

修复方案:用TYPE属性+value()方法避免转义

只需要给子查询加上TYPE参数,让它返回XML类型,再通过.value()方法提取纯文本,就能跳过自动转义,得到正常的HTML标签。同时还要修正[er.id]的拼接方式——你之前是把字段名写在字符串里,需要转换成实际的字段值才行。

修改后的完整SQL如下:

SELECT 
    e.*, 
    STUFF(
        (
            SELECT ',' + '<a href=test.aspx?tab=2&name=wil&item_id=' + CAST(er.id AS VARCHAR(50)) + '>' + er.name + '</a>' 
            FROM dbo.role er 
            FOR XML PATH ('') , TYPE
        ).value('text()[1]','nvarchar(max)'), 
        1, 
        1, 
        ''
    ) AS all_roles
FROM dbo.worker e

关键修改点说明:

  • 子查询末尾添加TYPE:让查询结果以XML类型返回,而不是自动转义后的字符串。
  • 使用.value('text()[1]','nvarchar(max)'):从XML对象中提取文本内容,这个过程不会对HTML特殊字符进行转义。
  • 修正er.id的拼接:用CAST(er.id AS VARCHAR(50))把ID字段转换成字符串,才能正确拼接到URL中(如果你的ID是数值类型的话)。

这样运行后,生成的HTML标签就会是正常的<a href=...>格式,不会再出现双重转义的问题啦!

内容的提问来源于stack exchange,提问作者namzaG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:56:55