0
我有以下表结构:如何使用SQL和XQuery获取根节点中所有节点的内容?
CREATE TABLE SpecialTable
(
Key UNIQUEIDENTIFIER,
XMLField VARCHAR(MAX)
)
在第一元组:
Key = "28384841-17283848-7836-18292939"
XMLField =
"<RootNode>
<ForeignKey>92383829-27374848-1298-19283789</ForeignKey>
<ForeignKey>47585853-27374848-4759-19283939</ForeignKey>
<ForeignKey>37383829-27374848-3747-19283930</ForeignKey>
</RootNode>"
在另一元组,我看到:
Key = "89984841-17283848-7836-18292939"
XMLField =
"<RootNode>
<ForeignKey>92383829-27374848-1298-19283789</ForeignKey>
<ForeignKey>37383829-27374848-3747-19283930</ForeignKey>
</RootNode>"
在另一元组,我看到:
Key = "11114841-17283848-7836-18292939"
XMLField =
"<RootNode>
<ForeignKey>37383829-27374848-3747-19283930</ForeignKey>
</RootNode>"
我需要做的是得到以下数据集进行:
Key ForeignKey
28384841-17283848-7836-18292939 92383829-27374848-1298-19283789
28384841-17283848-7836-18292939 47585853-27374848-4759-19283939
28384841-17283848-7836-18292939 37383829-27374848-3747-19283930
89984841-17283848-7836-18292939 92383829-27374848-1298-19283789
89984841-17283848-7836-18292939 37383829-27374848-3747-19283930
11114841-17283848-7836-18292939 37383829-27374848-3747-19283930
我必须说,这是一个简单的数据集和数据比这更复杂,我已经到了一个地步,我不能进一步得到。
我已经试过这样:
SELECT sp.Key,
x.XmlCol.Query('.')
FROM SpecialTable AS sp
CROSS APPLY sp.XMLField.nodes('/RootNode') x(XmlCol)
然而,似乎只是为了显示键和整个XMLField的XML的。
而且,我尝试这样做:
SELECT sp.Key,
x.XmlCol.Query('ForeignKey[text]')
FROM SpecialTable AS sp
CROSS APPLY sp.XMLField.nodes('/RootNode') x(XmlCol)
,我在第一时间拿到ForeignKey的节点,只有第一个值,而不是别人。
我在做什么错?
最亲切的问候,
QuietLeni
这太棒了!周五我正好在那里寻找几个小时。我必须承认,但是,我确实在星期六从记忆中写下了这篇文章。最后,我所查询的领域并不是我所做的。 SQL是针对专有数据库的内部表的报表。再次感谢! – QuietLeni