为什么SQL显示&和&?

时间:2012-05-16 12:10:24

标签: sql tsql

  

可能重复:
  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表具有&时,会发生什么?在其中一个领域,它显示&为&

有没有让这件事发生?

提前致谢。

2 个答案:

答案 0 :(得分:6)

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

我通常会在通话后解决这个问题:

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

并为其他字符嵌套替换。

答案 1 :(得分:2)

每个Section 2.4的XML规范,&必须进行转义,但在少数特殊情况下(例如在评论或CDATA部分内)。如果&未显示为&,则XML将无效。