从 SQL 中的 XML 数据中提取属性详细信息
Posted
技术标签:
【中文标题】从 SQL 中的 XML 数据中提取属性详细信息【英文标题】:Extract attribute details from XML data in SQL 【发布时间】:2020-01-28 16:27:28 【问题描述】:我在 SQL 中有一个列 (attributes),其中包含 XML 数据。您能否建议如何从该 XML 数据中提取 错误 详细信息
我尝试了下面的查询它没有工作。
SELECT top 10 identity_name,
CAST (tr.attributes as xml).value('(Attributes/Map/entry/value/accountrequest/ProvisioningResult/Errors[@key="Message"])[1]/@value','nvarchar(200)') as Message
From [identityiq].[identityiq].[spt_provisioning_transaction] as tr
where id = '8aae1d866d49a4b2016d57852fc3503b'
XML 数据在下面
<Attributes> <Map> <entry key="accessRequestId" value="0000086661"/> <entry key="request"> <value> <AccountRequest application="Active Directory" nativeIdentity="123" op="Modify"> <Attributes> <Map> <entry key="provisioningTransactionId" value="8aae1d866cace49c016cf7e26a7f4a8a"/> </Map> </Attributes> <AttributeRequest name="memberOf" op="Remove" value="Testgroup"/> <ProvisioningResult> <Errors> <Message key="Errors returned from IQService. "Failed to update attributes for identity 123. Failed to connect to the server for Testgroup"" type="Error"/> </Errors> </ProvisioningResult> </AccountRequest> </value> </entry> </Map> </Attributes>
【问题讨论】:
是区分大小写的。试试“属性” 【参考方案1】:注意区分大小写..
declare @x xml = N'
<Attributes>
<Map>
<entry key="accessRequestId" value="0000086661" />
<entry key="request">
<value>
<AccountRequest application="Active Directory" nativeIdentity="123" op="Modify">
<Attributes>
<Map>
<entry key="provisioningTransactionId" value="8aae1d866cace49c016cf7e26a7f4a8a" />
</Map>
</Attributes>
<AttributeRequest name="memberOf" op="Remove" value="Testgroup" />
<ProvisioningResult>
<Errors>
<Message key="Errors returned from IQService. "Failed to update attributes for identity 123. Failed to connect to the server for Testgroup"" type="Error" />
</Errors>
</ProvisioningResult>
</AccountRequest>
</value>
</entry>
</Map>
</Attributes>
';
select @x.value('(Attributes/Map/entry/value/AccountRequest/ProvisioningResult/Errors/Message[@type="Error"])[1]/@key','nvarchar(200)') as Message;
【讨论】:
以上是关于从 SQL 中的 XML 数据中提取属性详细信息的主要内容,如果未能解决你的问题,请参考以下文章
从具有 Oracle db 中的属性的 XML 中提取 NCLOB 中的 XML 数据
使用 Oracle 数据库中的 SQL 从 XML Clob 中提取数据
从 SQL Server 中的 XML 数据类型字段中提取数据