3

可能重复:
帮助 FOR XML PATH('') 转义“特殊”字符

我需要一些帮助,我的查询如下:

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 表在其中一个字段中有 & 时,它会将 & 显示为&

反正有没有不让这种情况发生?

提前致谢。

4

2 回答 2

7

这是因为在 XML 语句中组合的字符串使用的是 XML 特定字符。除了 & 之外,还影响 < 和 >,可能还有其他字符。

我通常会在通话后进行替换:

select @str = replace(@str, '&amp;', '&')

并嵌套替换其他字符。

于 2012-05-16T13:21:10.490 回答
2

根据XML 规范的第 2.4 节&,必须进行转义,除非在少数特殊情况下(例如在注释或 CDATA 部分中)。如果&不显示为&amp;,则 XML 无效。

于 2012-05-16T12:39:26.207 回答