Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
TSQL分割XML节点_Xml_Tsql_Sql Server 2008 - Fatal编程技术网

TSQL分割XML节点

TSQL分割XML节点,xml,tsql,sql-server-2008,Xml,Tsql,Sql Server 2008,如何查询如下所示的表: DECLARE @test as table ( [Id] int, [Changes] XML ) insert into @test VALUES (1,'<insert pk="1"/><insert pk="2"/><delete pk="1"/><delete pk="2"/>') insert into @test VALUES (2,'<insert pk="3"/>')

如何查询如下所示的表:

DECLARE @test as table (
    [Id] int,
    [Changes] XML
    )

insert into @test VALUES (1,'<insert pk="1"/><insert pk="2"/><delete pk="1"/><delete pk="2"/>')
insert into @test VALUES (2,'<insert pk="3"/>')
SELECT 
    ID, 
    XmlChanges.query('.')
FROM
    @test
CROSS APPLY
    Changes.nodes('/*') AS Nodes(XmlChanges)
将@test声明为表(
[Id]int,
[更改]XML
)
插入@测试值(1,”)
插入@测试值(2'')
要得到这个输出

1, <insert pk="1"/>
1, <insert pk="2"/>
1, <delete pk="1"/>
1, <delete pk="2"/>
2, <insert pk="3"/>
1,
1.
1.
1.
2.

尝试以下方法:

DECLARE @test as table (
    [Id] int,
    [Changes] XML
    )

insert into @test VALUES (1,'<insert pk="1"/><insert pk="2"/><delete pk="1"/><delete pk="2"/>')
insert into @test VALUES (2,'<insert pk="3"/>')
SELECT 
    ID, 
    XmlChanges.query('.')
FROM
    @test
CROSS APPLY
    Changes.nodes('/*') AS Nodes(XmlChanges)
结果将是:

ID  (No column name)
1   <insert pk="1" />
1   <insert pk="2" />
1   <delete pk="1" />
1   <delete pk="2" />
2   <insert pk="3" />
ID(无列名)
1.
1.
1.
1.
2.