gpt4 book ai didi

xml - tsql 如何拆分 xml 并将它们作为行插入

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

这里有一个问题(How to update all xml attributes' value in an xml variable using t-sql?),提问者想将一个 xml 变量拆分成行。

我有几乎相同的问题,但我将 xml 存储在一个表中。每行至少存储 1 个 xml 节点,有时更多。我想将它们拆分成单独的行,但 .nodes('a') 似乎需要一个标量变量。

这是我试过的:

declare @T table (XMLCol xml);

insert into @T values
('<a abb="122">
<b></b>
</a>
<a abb="144">
<b></b>
</a>'),
('<a abb="222">
<b></b>
</a>
<a abb="244">
<b></b>
</a>');

select a.query('.') from @T.nodes('a') a(a);

我想要实现的目标:我有一个这样的表:

ID           XML
1 <a abb="122"><b></b></a><a abb="144"><b></b></a>
2 <a abb="222"><b></b></a><a abb="244"><b></b></a>

我想把它转换成类似的东西:

ID           XML
1 <a abb="122"><b></b></a>
2 <a abb="144"><b></b></a>
3 <a abb="222"><b></b></a>
4 <a abb="244"><b></b></a>

为此我想写一些简单的东西

INSERT INTO table2 SELECT * FROM table1

你能帮帮我吗?

提前致谢!

最佳答案

像这样尝试(如果我正确理解你的问题):

declare @xml xml = N'<a abb="122"><b></b></a><a abb="144"><b></b></a>'
select @xml.query('/a/*')

如果您希望每个 b 节点都显示为行,请使用:

select x.items.query('.') from @xml.nodes('/a/b') as x(items) 

编辑:您可以像这样从表变量中获取数据:

select tbl.vals
from @T as t
cross apply (select x.items.query('.') from t.XMLCol.nodes('/a') as x(items)) as tbl(vals)

关于xml - tsql 如何拆分 xml 并将它们作为行插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37658615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com