2014-10-08 43 views
1

我有一个像选择与条件单独的XML节点在SQL

<root> 
<row> 
    <value>1</value> 
</row> 
<row> 
<value>2</value> 
</row> 
</root> 

我想<row>其中<value> = 2一个XML结构。可能吗?任何示例?

为了更加精确的XML结构是这样的

<root> 
<row> 
    <value>1</value> 
</row> 
<root> 
    <row> 
    <value>2</value> 
    </row> 
</root> 
</root> 
+0

你更新XML结构没有很好地格式化...你也可以使用'@x.nodes ('/ roots/root/row')a(b)'如果我假设所有根的根存在 – 2014-10-08 11:19:29

+0

已更新的XML。不,我没有所有根的根 – Garima 2014-10-08 11:22:31

+0

这是有线xml结构。您的第一个节点“”直接位于根目录下,而您的第二个“”位于根目录的“”下。 – 2014-10-08 11:31:59

回答

4

肯定的:

declare @x xml = '<root> 
<row> 
    <value>1</value> 
</row> 
<row> 
<value>2</value> 
</row> 
</root>'; 

select @x.query('/root[1]/row[./value/text()="2"]'); 
+0

谢谢罗杰。你能不能请解释一下。为什么root [1]? – Garima 2014-10-08 10:44:15

+0

@Garima,方括号内的“1”表示“元素的第一个实例”。在你的例子中,它没有什么区别,但是用更大的XML你可以获得更好的性能。 – 2014-10-08 10:46:33

+0

谢谢@Roger。我的错误,我犯了错误的XML。用正确的问题更新了我的问题。你现在可以回答吗?对不起,我是 – Garima 2014-10-08 10:57:49