gpt4 book ai didi

sql-server - SQL Server 中的 XQuery 与 OpenXML

转载 作者:数据小太阳 更新时间:2023-10-29 02:55:12 24 4
gpt4 key购买 nike

我在 SQL Server 表中有这个 XML:

<root>
<meetings>
<meeting>
<id>111</id>
<participants>
<participant><name>Smith</name></participant>
<participant><name>Jones</name></participant>
<participant><name>Brown</name></participant>
</participants>
</meeting>
<meeting>
<id>222</id>
<participants>
<participant><name>White</name></participant>
<participant><name>Bloggs</name></participant>
<participant><name>McDonald</name></participant>
</participants>
</meeting>
</meetings>
</root>

想要这样的结果集:

MeetingID    Name
111 Smith
111 Jones
111 Brown
222 White
222 Bloggs
222 McDonald

使用 select from openxml 很容易,但我使用 XQuery 失败了。有人可以帮助我吗,也许还可以给出这两种方法的优缺点?

最佳答案

一旦您修复了无效的 XML(<name> 元素需要以 </name> 结束标记结束),您应该能够使用它:

SELECT 
Meetings.List.value('(id)[1]', 'int') AS 'Meeting ID',
Meeting.Participant.value('(name)[1]', 'varchar(50)') AS 'Name'
FROM
@input.nodes('/root/meetings/meeting') AS Meetings(List)
CROSS APPLY
Meetings.List.nodes('participants/participant') AS Meeting(Participant)

基本上,第一次调用 .nodes()为您提供所有 <meeting> 的伪表节点,我从中提取 session ID。

第二个.nodes()调用<meeting>标签深入挖掘 <participants>/<participant>子节点列表并从这些节点中提取名称。

关于sql-server - SQL Server 中的 XQuery 与 OpenXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405837/

24 4 0
文章推荐: html - 在 Ruby(或 Shell)中漂亮地打印 HTML
文章推荐: javascript - 如何提前中断 reduce() 方法?
文章推荐: javascript - 如何使 HTML
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com