xml - TSQL 拆分 XML 节点

标签 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"/>')

要得到这个输出?

1, <insert pk="1"/>
1, <insert pk="2"/>
1, <delete pk="1"/>
1, <delete pk="2"/>
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" />

关于xml - TSQL 拆分 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6000160/

相关文章:

xml - 多模块 Java/Maven 项目中 DBUnit 的 XML DTD 路径?

sql-server - 在 SQL Server 中计算加权平均值

sql-server - 查询列出所有存储过程

C 从 FILE* 中读取带空格的格式化行

java - 在Java中从 "Document"替换文件中的XML

tsql - Visual Studio 2010 SQL 可变颜色

java - 尝试使用 SQL Server 身份验证连接到 SQL Server 2008 Express 数据库始终会导致 "Login failed for user ' .. .'."

sql - 从数据库中的多个表中查找特定列(字段)名称

sql-server - 重新编译存储过程?

xml - XPath 祖先或自身解析顺序