2017-01-16 10 views
2

以下に示すように、私は、複数のキーを持つユーザーの子ノードの値を取得する必要があります。連結方式のXMLノード値

<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の3行になります - 1つの行が3つのキーUserID -sをすべて連結しています。 keyの数は可変であり、多分3以上である。

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

をしかし、問題は、私は、すべてのユーザーID-S

答えて

1

を取得することはできませんあなたはこのようにそれを行うことができます::

は、静的なユーザーIDの値を取得するために管理している

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

優れたソリューション、ありがとう! –