3

我的表中有三列,其中一列是 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

谢谢!安克

4

2 回答 2

2

尝试这个

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

演示

于 2013-07-04T10:24:33.457 回答
0
select
    T.Col1, T.Col2,
    C.N.value('@id', 'int') as ID,
    C.N.value('@name', 'nvarchar(max)') as Name
from Table1 as T
    outer apply T.Col3.nodes('Interactions/interaction') as C(N)

sql fiddle demo

于 2013-08-07T11:44:20.257 回答