关于如何从xml列中的根节点检索值的SQL查询

时间:2013-01-24 10:25:00

标签: sql xml

我不熟悉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,但不确定如何为其编写查询。

感谢帮助

1 个答案:

答案 0 :(得分: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)');