2017-01-16 39 views
2

我需要多个密钥来获得用户的childnode值,如下图所示:的毗连XML节点值SQL

<Individuals> 
    <User key="0"> 
     <UserlID>100</UserlID> 
     <FirstName>John Doe</FirstName> 
    </User> 
    <User key="1"> 
     <UserlID>101</UserlID> 
     <FirstName>Jane Doe</FirstName> 
    </User> 
    <User key="2"> 
     <UserlID>102</UserlID> 
     <FirstName>Jack Black</FirstName> 
    </User> 
</Individuals> 

我想要的结果可能是,三排所有按键UserID的 - s或一行连接所有三个密钥UserID-s。 key的数量是可变的,也许多于三个。

设法让静态的用户ID值:

SELECT 
    [UserID] = A.XmlField.value('(Individuals/User[@key=2]/UserlID)[1]', 'Int') 
FROM [MyTable] As A 

,但问题是我不能让所有的用户ID-S

回答

1

你可以这样来做:

SELECT u.value('UserlID[1]', 'int') as UserlID 
    FROM MyTable CROSS APPLY XmlField.nodes('/Individuals/User') i(u) 
+0

伟大的解决方案, 谢谢! –