【问题标题】:SQL server : How to seperate XML nodes in different rowsSQL 服务器:如何分隔不同行中的 XML 节点
【发布时间】:2013-07-02 05:43:53
【问题描述】:
我的表中有三列,其中一列是 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
谢谢!
安克
【问题讨论】:
标签:
sql
sql-server
xml
xpath
sqlxml
【解决方案1】:
试试这个
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
【解决方案2】:
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