可能重复:
help with FOR XML PATH('') escaping “special” characters
我需要一些帮助,我的查询如下:
STUFF(
(
SELECT ',' + CountDesc
FROM Count INNER JOIN ProjectCount ON Count.Id = ProjectCount.CountId
WHERE ProjectCount.ProjectId = Project.Id ORDER BY Count.CountDesc
FOR XML PATH('')
), 1, 1, '') as [Country]
当我运行此查询并且Count表具有&时,会发生什么?在其中一个领域,它显示&为&
。
有没有让这件事发生?
提前致谢。
答案 0 :(得分:6)
这种情况正在发生,因为在XML语句中组合的字符串使用的是XML特定字符。除了&之外,还影响<和>,可能还有其他角色。
我通常会在通话后解决这个问题:
select @str = replace(@str, '&', '&')
并为其他字符嵌套替换。
答案 1 :(得分:2)
每个Section 2.4的XML规范,&
必须进行转义,但在少数特殊情况下(例如在评论或CDATA部分内)。如果&
未显示为&
,则XML将无效。