如何合并 SQL Server 中 Xml 字段中的多个项目
我正在尝试使用数据库中的一些 xml 数据。
起点是一个具有粗略轮廓的表格:
CREATE TABLE MyTable
(
ID INT NOT NULL IDENTITY(1,1),
...,
FKSiteID INT NOT NULL REFERENCES ...,
...,
Keywords XML(DOCUMENT info.Keywords) NULL
)
典型的 xml 片段可能是:
<keywords xmlns="http://www.educations.com/Info/Keywords">
<keyword>keyword 1</keyword>
<keyword>keyword 2</keyword>
<keyword>keyword 3</keyword>
<keyword>keyword 4</keyword>
<keyword>keyword 5</keyword>
</keywords>
我最终想要实现的是一个视图,显示按照 FKSiteID 值遵循相同架构的单个 xml 文档中分组的所有关键字。
作为中间步骤,我试图提取所有关键字,但如果不使用表函数并对表进行交叉应用,我就无法做到这一点。
还有其他提示吗?
I'm trying to work with some xml data we have in our database.
The starting point is a table with this rough outline:
CREATE TABLE MyTable
(
ID INT NOT NULL IDENTITY(1,1),
...,
FKSiteID INT NOT NULL REFERENCES ...,
...,
Keywords XML(DOCUMENT info.Keywords) NULL
)
a typical xml snippet could be:
<keywords xmlns="http://www.educations.com/Info/Keywords">
<keyword>keyword 1</keyword>
<keyword>keyword 2</keyword>
<keyword>keyword 3</keyword>
<keyword>keyword 4</keyword>
<keyword>keyword 5</keyword>
</keywords>
what I want to achieve at the end is a view showing all the keywords grouped in a single xml document following the same schema by the value of FKSiteID.
As a middle step I was trying to extract all the keywords but I didn't manage to do it without using a table function and CROSS APPLY to it the table.
Any other hint?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
合并文档是可行的,但是您将受到 xquery 中的命名空间错误/功能的影响。似乎命名空间与 FOR XML 一起使用时会级联到所有节点级别。它确实创建了有效的 XML,但其可读性较差且完全冗余。更多此处< /a>
希望这就是您正在寻找的:
Merging the documents is doable, however you'll be subject to a namespace bug/feature in xquery. Seems that the namespace when used with FOR XML cascades throughout all node levels. It does create valid XML, but its not as readable and totally redundant. More here
Hopefully this is what youre looking for:
通过更好地谷歌搜索,我在 msdn 上找到了指导如何解决问题的指南。
这是我试图按 ST.FKSiteID 分组并聚合值的问题的部分解决方案
,但显然没有聚合函数可处理 xml 数据。
太可惜了。
By googling a bit better I found guides on msdn telling how to solve the problem.
This is the partial solution to the problem
I was trying to group by ST.FKSiteID and aggregate the values, but apparently there is no aggregate function working with xml data.
Such a shame.