2012-11-23 56 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'总是被追捧的元素。 –