2011-03-18 67 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

相关问题