2013-07-04 58 views
3

我的表中有三列與一列XML類型。我想在不同的行中顯示XML數據的不同節點。 Like,SQL服務器:如何分隔不同行中的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 

謝謝! ANK

回答

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

DEMO

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