从SQL Server上的SELECT中获取XML

时间:2022-07-08 23:50:02

I have the following xml

我有以下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>'

I would like to get the following as the result of my query

我希望得到以下作为我的查询的结果

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

Can sombody help with the query? I been trying for a while without success.

sombody可以帮助查询吗?我一直试着没有成功。

Thanks in advance.

提前致谢。

1 个解决方案

#1


3  

How about this:

这个怎么样:

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

Gives me the desired output:

给我想要的输出:

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

The @Obligaciones.query() fetches the XML element with the id=51 attribute, and then I wrap the resulting line of XML into a XML root element called <obligaciones>.

@ Obligaciones.query()使用id = 51属性获取XML元素,然后将生成的XML行包装到名为 的XML根元素中。

Update: if you're looking to get the first element regardless of its id attribute - use this query instead:

更新:如果您想要获取第一个元素而不管其id属性 - 请改用此查询:

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

#1


3  

How about this:

这个怎么样:

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

Gives me the desired output:

给我想要的输出:

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

The @Obligaciones.query() fetches the XML element with the id=51 attribute, and then I wrap the resulting line of XML into a XML root element called <obligaciones>.

@ Obligaciones.query()使用id = 51属性获取XML元素,然后将生成的XML行包装到名为 的XML根元素中。

Update: if you're looking to get the first element regardless of its id attribute - use this query instead:

更新:如果您想要获取第一个元素而不管其id属性 - 请改用此查询:

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