0

我是 SQL 中的 XML 查询的新手,希望有人可以帮助我处理有关如何检索类型值的 Sql 查询。

我有一个 xml 列数据,如下所示

<mnt:job xmlns:mnt="http://namespaces.aada.be/4.0/maintenance"
xmlns:order="http://namespaces.aadasoftware.net/4.4/maintenance/order" 
mnt:version="1.0" mnt:type="Aada.Core.Orders.DownloadOrder, Aada.Core">
<mnt:targets>
<mnt:target mnt:id="bf321a20-8283-4760-a683-57892d8b9e12" mnt:status="Succeeded" 
mnt:duration="00:00:00" mnt:message="" mnt:attempt="1">
<mnt:custom>
 .................

我想检索value("Aada.Core.Orders.DownloadOrder, Aada.Core")内部mnt:type但不确定如何为它编写查询。

感谢帮助

4

1 回答 1

0

您需要使用@来获取属性:

DECLARE @X XML = '<mnt:job xmlns:mnt="http://namespaces.aada.be/4.0/maintenance"
                    xmlns:order="http://namespaces.aadasoftware.net/4.4/maintenance/order" 
                    mnt:version="1.0" mnt:type="Aada.Core.Orders.DownloadOrder, Aada.Core">
                        <mnt:targets>
                            <mnt:target mnt:id="bf321a20-8283-4760-a683-57892d8b9e12" mnt:status="Succeeded" 
                            mnt:duration="00:00:00" mnt:message="" mnt:attempt="1" />
                        </mnt:targets>
                    </mnt:job>';

WITH XMLNAMESPACES ('http://namespaces.aada.be/4.0/maintenance' AS mnt)
SELECT  @X.value('(/mnt:job/@mnt:type)[1]', 'nvarchar(max)');
于 2013-01-24T11:46:42.060 回答