繁体   English   中英

在SQL Server 2012中读取XML结构

[英]Reading xml Structure in sql server 2012

样本XML结构

<?xml version="1.0" encoding="UTF-8"?>
<XmlSerializableHashtable xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <Entries>
      <Entry>
         <key xsi:type="xsd:string">col1</key>
         <value xsi:type="xsd:string">500</value>
      </Entry>
      <Entry>
         <key xsi:type="xsd:string">col2</key>
         <value xsi:type="xsd:string">0/60,1/1000</value>
      </Entry>
      <Entry>
         <key xsi:type="xsd:string">col3</key>
         <value xsi:type="xsd:string">localhost</value>
      </Entry>
   </Entries>
</XmlSerializableHashtable>

不,我要在键为col3的地方获取价值

我正在尝试使用Xquery

Declare @x xml;
Set @x = (Select valuefrom sometable)

Select @x.query('/Entries/Entry/')

该查询将有所帮助。

DECLARE @xmlData AS XML
DECLARE @sRawData AS VARCHAR(2000)

SET @sRawData = '<?xml version="1.0" encoding="UTF-8"?>
<XmlSerializableHashtable xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <Entries>
      <Entry>
         <key xsi:type="xsd:string">col1</key>
         <value xsi:type="xsd:string">500</value>
      </Entry>
      <Entry>
         <key xsi:type="xsd:string">col2</key>
         <value xsi:type="xsd:string">0/60,1/1000</value>
      </Entry>
      <Entry>
         <key xsi:type="xsd:string">col3</key>
         <value xsi:type="xsd:string">localhost</value>
      </Entry>
   </Entries>
</XmlSerializableHashtable>'

SET @xmlData = CAST(@sRawData AS XML)

SELECT MainDataCenter.Col.value('(key)[1]','varchar(max)') AS [key]
      ,MainDataCenter.Col.value('(value)[1]','varchar(max)') AS Value
FROM @xmlData.nodes('/XmlSerializableHashtable/Entries/Entry') AS MainDataCenter(Col)
WHERE MainDataCenter.Col.value('(key)[1]','varchar(max)') = 'col3'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM