2014-04-01 41 views
0

这是我的XML如何获得基于条件的XML节点在SQL Server

DECLARE @XMLValues XML 
SET @XMLValues = '<?xml version="1.0" encoding="UTF-8"?> 
<DOCUMENTS name="NYSPIT"> 
<DOCUMENT ID="140208512T200911101"> 
<REPEATS> 
<REPEAT NAME="EXCEPTIONS"> 
<ROW> 
<FIELD VALUE="09_NYC-3A_2" NAME="PageType"/> 
<FIELD VALUE="" NAME="KeyWord"/> 
<FIELD VALUE="020852009111001.002" NAME="ImageName"/> 
<FIELD VALUE="2" NAME="PageNo"/> 
<FIELD VALUE="" NAME="Qualifier"/> 
</ROW> 
</REPEAT> 
</REPEATS> 
</DOCUMENT> 
<DOCUMENT ID="140208512T200911102"> 
<REPEATS> 
<REPEAT NAME="EXCEPTIONS"> 
<ROW> 
<FIELD VALUE="09_NYC-3A_2" NAME="PageType"/> 
<FIELD VALUE="" NAME="KeyWord"/> 
<FIELD VALUE="020852009111001.002" NAME="ImageName"/> 
<FIELD VALUE="2" NAME="PageNo"/> 
<FIELD VALUE="" NAME="Qualifier"/> 
</ROW> 
</REPEAT> 
</REPEATS> 
</DOCUMENT> 
</DOCUMENTS> 

,我需要检索标识的XML节点 - 140208512T200911101孤单。我不能够使用各种方法获取信息,仍然没有得到正确的。

我期望的结果应该是这样的:

<DOCUMENT ID="140208512T200911101"> 
<REPEATS> 
<REPEAT NAME="EXCEPTIONS"> 
<ROW> 
<FIELD VALUE="09_NYC-3A_2" NAME="PageType"/> 
<FIELD VALUE="" NAME="KeyWord"/> 
<FIELD VALUE="020852009111001.002" NAME="ImageName"/> 
<FIELD VALUE="2" NAME="PageNo"/> 
<FIELD VALUE="" NAME="Qualifier"/> 
</ROW> 
</REPEAT> 
</REPEATS> 
</DOCUMENT> 

在此请帮助...

回答

0
select @XMLValues.query('/DOCUMENTS/DOCUMENT[@ID = "140208512T200911101"]') 

结果

<DOCUMENT ID="140208512T200911101"> 
    <REPEATS> 
    <REPEAT NAME="EXCEPTIONS"> 
     <ROW> 
     <FIELD VALUE="09_NYC-3A_2" NAME="PageType" /> 
     <FIELD VALUE="" NAME="KeyWord" /> 
     <FIELD VALUE="020852009111001.002" NAME="ImageName" /> 
     <FIELD VALUE="2" NAME="PageNo" /> 
     <FIELD VALUE="" NAME="Qualifier" /> 
     </ROW> 
    </REPEAT> 
    </REPEATS> 
</DOCUMENT> 
+0

感谢您的支持,并且它工作的很好,可以从我们需要的变量中动态获取@ID值,如下所示: – VasanthSivakumar

1

感谢您的支持,它工作正常,用于从一个变量中动态获取@ID值,我们需要像这样使用用户:

DECLARE @DCN Varchar(50) 
SET @DCN = '140208512T200911101' 
select @XMLValues.query('/DOCUMENTS/DOCUMENT[@ID = sql:variable("@DCN")]')