0

我需要查询服务器中可用的 xml 数据

<root>
  <Parameter>
     <Param>APP_REG_NUMBER</Param>
     <Value>AL/T/2010/86</Value>
  </Parameter>
  <Parameter>
      <Param>SUBLINEID</Param>
      <Value>235931</Value>
  </Parameter>
</root>

这是我将数据保存到 SQL Server 的结构,我需要输出如下:

Filed1     , Filed2   , APP_REG_NUMBER,  SUBLINEID
something   something , AL/T/2010/86, 235931

请只做那些需要的

4

1 回答 1

1

您可以为此使用 XQuery,但要意识到您正在 XML 中重新创建键值对,这否定了以任何合理方式使用模式或 XQuery/XPATH 的能力。考虑将格式更改为:

<root>
    <APP_REG_NUMBER>AL/T/2010/86</APP_REG_NUMBER>
    <SUBLINEID>235931</SUBLINEID>
</root>

我离题了......你想要的查询是:

DECLARE @testXml xml = N'<root>
  <Parameter><Param>APP_REG_NUMBER</Param><Value>AL/T/2010/86</Value></Parameter>
  <Parameter><Param>SUBLINEID</Param><Value>235931</Value></Parameter>
</root>'

SELECT 
    @testXml.value('(//Parameter[Param/text()="APP_REG_NUMBER"]/Value)[1]', 'nvarchar(50)') as APP_REG_NUMBER,
    @testXml.value('(//Parameter[Param/text()="SUBLINEID"]/Value)[1]', 'nvarchar(50)') as SUBLINEID

您使用//Parameter语法查找所有Parameter元素,然后将它们过滤([Param/text()="foobar"])以仅具有名为的子元素且Value内部文本为SUBLINEID. 从那里,您导航到/Value子元素并返回第一个结果 ( (query)[1])。

于 2013-10-29T20:40:04.737 回答