sql - 在 SQL Server 中解析多根 XML
问题描述
我需要从存储在 SQL Server 的 xml 列中的数据中获取多个属性。
XML 数据是多根的,我无法获取超出“
这是 XML 的一个片段:
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
xmlns:rs="urn:schemas-microsoft-com:rowset"
xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="300">
<s:AttributeType name="GmID" rs:number="1" rs:writeunknown="true">
<s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" rs:maybenull="false"/>
</s:AttributeType>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row GmID="550733" ReadingTime="2019-09-23T15:44:58" DataSequenceNumber="132978"/>
</rs:data>
</xml>
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
xmlns:rs="urn:schemas-microsoft-com:rowset"
xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="300">
<s:AttributeType name="GmID" rs:number="1" rs:writeunknown="true">
<s:datatype dt:type="int" dt:maxLength="4" rs:precision="10" rs:fixedlength="true" rs:maybenull="false"/>
</s:AttributeType>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row GmID="550733" ReadingTime="2019-09-23T15:44:58" DataSequenceNumber="133008"/>
</rs:data>
</xml>
如何获取“
解决方案
您可以使用以下语法获取任何属性。如果性能很重要,您可以为查询声明名称空间,而不是使用“*”。
select x.value('./*:data[1]/*:row[1]/@DataSequenceNumber','int')
from @x.nodes('/xml') as t(x)
将返回:
132978
133008