首页 > 解决方案 > SQL FOR XML PATH 返回“非法名称字符”错误

问题描述

我正在尝试使用 FOR XML PATH “技巧”从几行中创建一行文本,例如在这个问题中:How to concat many rows into a string in SQL Server 2008?

但是,SQL Server 返回一条错误消息,指出

XML 解析:第 1 行,字符 53,非法名称字符

我无法弄清楚是什么导致了这个错误。可能我的数据中有些东西不喜欢......有问题的查询是一个相关的子查询,类似于:

(select my_text_field as [text()] 
  from child_table 
  where foreign_key = master_table.id 
  order by some_sequence 
  for xml path ('')) as comment 

所涉及数据的庞大规模使得手动查看字段中的异常情况变得困难。

关于我如何解决这个问题的任何提示?我的印象是 FOR XML PATH 应该能够自行转义非法字符,但也许不是......?

标签: sql-serverxmlcorrelated-subquery

解决方案


尝试这个

    SELECT STUFF((SELECT N',' + my_text_field 
      FROM child_table 
      where foreign_key = master_table.id 
      order by some_sequence  
      FOR XML PATH, TYPE).value(N'.[1]', N'nvarchar(max)')
    ,1, 1, N'');

推荐阅读