sql-server - 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 应该能够自行转义非法字符,但也许不是......?
解决方案
尝试这个
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'');
推荐阅读
- jekyll - 可以在线编辑 Jekyll 站点的工具,类似于 CMS
- javascript - 同步 Pepper 的语音和平板电脑
- azure - Azure WebApp 是否需要 Roslyn CodeAnalysis Dll?
- javascript - 如何使用 express-graphql 引发多个错误?
- vba - 在从第一行到最后一行的列中查找单词
- scheduler - 如何在白天平均分配 DAG 运行执行
- python - 如果 RDC 最小化,Sikuli 脚本不会运行
- javascript - JavaScript: TypeError: work.calls is not iterable in function decorator (beginner question)
- php - PHP从一个文件夹中回显几个
- ruby-on-rails - rake DB 任务挂起