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