Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLServer:如何在不同的行中分离XML节点_Sql_Sql Server_Xml_Xpath_Sqlxml - Fatal编程技术网

SQLServer:如何在不同的行中分离XML节点

SQLServer:如何在不同的行中分离XML节点,sql,sql-server,xml,xpath,sqlxml,Sql,Sql Server,Xml,Xpath,Sqlxml,我的表中有三列,其中一列为XML类型。我想在不同的行中显示XML数据的不同节点。像 Col1 Col2 Col3 12 ABC <Interactions><interaction id='2' name='A'/><interaction id='3' name='B'/></Interactions> 谢谢! Ank试试这个 SELECT A.Col1 ,A.Col

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

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

试试这个

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

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