Tsql 使用通配符使用Xquery检索第一个值

Tsql 使用通配符使用Xquery检索第一个值,tsql,xquery,wildcard,Tsql,Xquery,Wildcard,在SQLServer2008中没有分配模式的XmlData列中,如何在特定节点级别提取第一项?例如,我有: SELECT XmlData.value('//*/*[1]','NVARCHAR(6)') FROM table where XmlData.Exist('//*/*[1]') = 1 我假设这不起作用,因为如果在第二级有多个具有不同名称的节点,则可以返回每个节点中的第一个(并且value()要求选择一个单例。 由于我不知道任何节点的名称,有没有办法总是选择第一个节点在第二级的名称?

在SQLServer2008中没有分配模式的XmlData列中,如何在特定节点级别提取第一项?例如,我有:

SELECT 
XmlData.value('//*/*[1]','NVARCHAR(6)')
FROM table
where XmlData.Exist('//*/*[1]') = 1
我假设这不起作用,因为如果在第二级有多个具有不同名称的节点,则可以返回每个节点中的第一个(并且
value()
要求选择一个单例。
由于我不知道任何节点的名称,有没有办法总是选择第一个节点在第二级的名称?

我通过链接Xquery
.query()
.value()
找到了答案


这将返回第一个节点的值,非常适合我的需要。

我通过链接Xquery
.query()
.value()
找到了答案

这将返回第一个节点的值,非常适合我的需要

XMLDATA.query('//*/*[1]').value('.[1]','NVARCHAR(6)')