我需要查询服务器中可用的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
请做需要的
你可以使用 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]
)。