使用SQLXML的xml文档中的第一个子节点

时间:2011-05-11 20:14:08

标签: sql-server xml

我有一点XML,我想从第一个孩子那里得到。到目前为止,我已经能够这样做了:

DECLARE @x XML = '<a><b foo="bar">some data</b><b foo="baz"/></a>'
SELECT @x.query('(/a/child::*)[1]')

我只是想知道是否有更有效的方法。我的问题是在运行时之前我不知道“a”标签后面的元素,所以只是说

@x.query('(/a/b)[1]')

对我不起作用。 “a”之后的标签也可以是“c”,我希望一个查询能够解释这个问题。

2 个答案:

答案 0 :(得分:1)

试试这个:

DECLARE @x XML = '<a><b foo="bar">some data</b><b foo="baz"/></a>'
SELECT @x.query('(/a/*)[1]')

它实际上是完全相同的查询,因为子轴是xpath中的默认轴。此外,这应该是有效的。

答案 1 :(得分:0)

这应该适合你:

SELECT @x.query('(/a/*[1])')
相关问题