2012-11-23 60 views
1

我有以下XML獲取XML在SQL Server

declare @Obligaciones xml 
set @Obligaciones = '<obligaciones> 
    <Obligacion id = "51" TipoCancelacionObligacionId = "1" > </Obligacion> 
    <Obligacion id = "52" TipoCancelacionObligacionId = "2"> </Obligacion> 
    <Obligacion id = "53" TipoCancelacionObligacionId = "2"> </Obligacion> 
    </obligaciones>' 

我想獲得以下爲我查詢的結果

<obligaciones> 
    <Obligacion id = "51" TipoCancelacionObligacionId = "1" > </Obligacion> 
</obligaciones> 

可以sombody與查詢幫助上? 我一直在嘗試一段時間沒有成功。

在此先感謝。

回答

3

這樣如何:

SELECT 
    @Obligaciones.query('/obligaciones/Obligacion[@id="51"]') 
FOR XML PATH (''),ROOT('obligaciones') 

給我所需要的輸出:

<obligaciones> 
    <Obligacion id="51" TipoCancelacionObligacionId="1" /> 
</obligaciones> 

@Obligaciones.query()取出與所述id=51屬性的XML元素,然後我包裹得到的XML的線成XML根元素稱爲<obligaciones>

更新:如果你正在尋找獲得第一元素,無論其id屬性 - 使用此查詢代替:

SELECT 
    @Obligaciones.query('/obligaciones/Obligacion[1]') 
FOR XML PATH (''),ROOT('obligaciones') 
+0

我懷疑雨果想的第一要素,而不是一個用具體的ID。 –

+1

@AaronBertrand:我的更新如何? –

+0

看起來不錯。第一個*可能是對的,但我懷疑'51'總是被追捧的元素。 –