2013-01-24 98 views
0

我是新來的SQL查詢中的XML查詢,並希望有人可以幫助我與Sql查詢如何檢索類型值。SQL查詢如何檢索xml列中根節點的值

我有一個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> 
................. 

我想找回裏面mnt:typevalue("Aada.Core.Orders.DownloadOrder, Aada.Core"),但不知道如何編寫查詢它。

欣賞的幫助

+0

哪些DBMS您使用的?甲骨文? PostgreSQL的? DB2? –

回答

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)'); 
+0

感謝那Gareth 我試過這個,它的工作,但欣賞的幫助,感謝很多 select [Data] .value('declare namespace x =「http://namespaces.aada.be/4.0/maintenance」 ;((/ x:job/@ x:type) [1])','nvarchar(max)')作爲結果 FROM [aada]。[dbo]。[tblMAINTENANCEJOBHISTORY] – Arvind