我的表中有三列,其中一列是xml类型的。我想在不同的行中显示XML数据的不同节点。像,

Col1      Col2         Col3
12        ABC          <Interactions><interaction id='2' name='A'/><interaction id='3' name='B'/></Interactions>

如何在不同的行中显示不同的交互?像,
Row1 :  12    ABC   2   A
Row2 :  12    ABC   3   B

谢谢!
航向

最佳答案

试试这个

SELECT
    A.Col1
    ,A.Col2
    ,Split.interaction.value('@id', 'INT') AS [ID]
    ,Split.interaction.value('@name', 'VARCHAR(10)') AS [Name]
 FROM
 (
    SELECT Col1, Col2, Col3 FROM  #Tablexml
 ) AS A CROSS APPLY Col3.nodes ('/Interactions/interaction') AS Split(interaction);

DEMO

10-08 00:05