MS SQL中的Concat xml节点值

时间:2017-01-16 10:28:53

标签: sql sql-server xml sql-server-2012

我需要获取具有多个键的用户的childnode值,如下所示:

<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>

我想要的结果是,三行所有key-s UserID - s或一行连接所有三个键UserID - s。 key的数量是可变的,可能超过三个。

设法获取静态UserID值:

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

但问题是我无法获得所有userID-s

1 个答案:

答案 0 :(得分:1)

你可以这样做:

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