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.