XML sql查询,属性为列
我需要查询服务器中可用的xml数据XML sql查询,属性为列,sql,xml,sql-server-2008,Sql,Xml,Sql Server 2008,我需要查询服务器中可用的xml数据 <root> <Parameter> <Param>APP_REG_NUMBER</Param> <Value>AL/T/2010/86</Value> </Parameter> <Parameter> <Param>SUBLINEID</Param> <Value>2359
<root>
<Parameter>
<Param>APP_REG_NUMBER</Param>
<Value>AL/T/2010/86</Value>
</Parameter>
<Parameter>
<Param>SUBLINEID</Param>
<Value>235931</Value>
</Parameter>
</root>
请执行必要的操作您可以使用XQuery来实现这一点,但要意识到您正在用XML重新创建键值对,这就否定了以任何合理方式使用模式或XQuery/XPATH的能力。考虑将格式更改为:
<root>
<APP_REG_NUMBER>AL/T/2010/86</APP_REG_NUMBER>
<SUBLINEID>235931</SUBLINEID>
</root>
AL/T/2010/86
235931
我离题了。。。您需要的查询是:
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
DECLARE@testXml=N'
APP_注册号/T/2010/86
子线235931
'
挑选
@testXml.value('(//参数[Param/text()=“APP_REG_NUMBER”]/value)[1],“nvarchar(50)”作为APP_REG_NUMBER,
@testXml.value(‘(//参数[Param/text()=“SUBLINEID”]/value)[1],'nvarchar(50)’)作为SUBLINEID
您可以使用//Parameter
语法查找所有Parameter
元素,然后将它们([Param/text()=“foobar”]
)过滤到只有子元素名为Value
且内部文本为SUBLINEID
的元素。从那里,您导航到/Value
子元素并返回第一个结果((查询)[1]
)
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