2011-03-18 68 views
1

這是我的XML的樣子。我想在SQL Server 2008中查詢XML。我想顯示所有基於ID的聲明。如何獲取xml文件的子元素的所有值。 SQL服務器2008

<clue xmlns="http://cp.com/rules/client"> 
    <claim unit_number="1" number="0000007517" id="S1" 
      sequence_number="1"> 
     <scope_of_claim>Full scope</scope_of_claim> 
    </claim> 
    <claim unit_number="1" number="0000007518" id="S1" 
      sequence_number="2"> 
     <scope_of_claim>Full scope</scope_of_claim> 
    </claim> 
</clue> 

我的查詢:

下面的查詢給我的值只有第一個要求。

;WITH XMLNAMESPACES (DEFAULT 'http://cp.com/rules/client') 
select xmldocument.value('(//claim/@number)[1]','varchar(20)') as ClaimNumber, 
     xmldocument.value('(//claim/scope_of_claim)[1]','varchar(20)') as Scope 
     ..... 
from clue.xml 

我如何得到所有的索賠?

+0

什麼是'clue.xml'和'xmldocument'你有一個名爲'clue'的模式表叫做'xml',名爲'xmldocument'嗎? – 2011-03-18 18:36:03

+0

馬丁就是這樣。而且,xmldocument的類型是xml。 – BumbleBee 2011-03-18 18:37:05

回答

2
;WITH XMLNAMESPACES (DEFAULT 'http://cp.com/rules/client') 
SELECT xmlid, 
     ClaimNumber, 
     Scope 
FROM clue.xml 
     OUTER APPLY 
        (SELECT 
        tbl.col.value('(@number)[1]', 'varchar(20)') AS ClaimNumber, 
        tbl.col.value('(scope_of_claim)[1]', 'varchar(20)') AS Scope 
        FROM xmldocument.nodes('//claim') AS tbl(col)) x 
+0

非常感謝。這就像魅力一樣。 – BumbleBee 2011-03-18 18:47:36

相關問題