1

私は次のxmlを持っています

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>

誰かがクエリを手伝ってくれる?私はしばらくの間成功せずに試みてきました。

前もって感謝します。

4

1 に答える 1

3

これはどう:

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

目的の出力が得られます。

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

は属性@Obligaciones.query()を持つXML要素をフェッチし、XMLid=51の結果の行を。というXMLルート要素にラップします<obligaciones>

更新:属性に関係なく最初の要素を取得しようとしている場合は、id代わりにこのクエリを使用してください:

SELECT  
    @Obligaciones.query('/obligaciones/Obligacion[1]')
FOR XML PATH (''),ROOT('obligaciones')
于 2012-11-23T19:28:18.433 に答える