sql-server - 使用 xquery 压缩 xml 节点?

标签 sql-server xml sql-server-2008 xpath xquery

我有以下 xml。

declare @x xml = '
<Cols>
    <Col><Name>A</Name></Col>
    <Col><Name>B</Name></Col>
    <Col><Name>C</Name></Col>
    <Col><Name>D</Name></Col>
</Cols>
<Values>
    <A>1</A>
    <B>2</B>
    <C>3</C>
    <D>4</D>
</Values>
';

如何编写select @x.query('......')将其转换为

<Cols>
    <Col><Name>A</Name><Value>1</Value></Col>
    <Col><Name>B</Name><Value>2</Value></Col>
    <Col><Name>C</Name><Value>3</Value></Col>
    <Col><Name>D</Name><Value>4</Value></Col>
</Cols>

最佳答案

似乎以下正在做您需要的事情:

select @x.query('
    element Cols {
      for $c in /Cols/Col
        return
          <Col>
           { $c/Name }
           { element Value { text {/Values/*[local-name()=$c/Name/text()[1]]} } }
          </Col>
    }
  ');

关于sql-server - 使用 xquery 压缩 xml 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794515/

相关文章:

sql-server - PostgreSQL 中外部应用的等效语法是什么

sql-server - 经典ASP-SQL错误停止码,从不显示

php - xpath查询中如何使用多个条件?

sql - 如何在SQL中从字符串中提取某些第n个字符

sql - SQL Server Management Studio 中是否有 SELECT ... INTO OUTFILE 等效项?

sql-server - 如何将存储在表中的路径与 OPENROWSET 一起使用?

java - JAXB Marshal 缺少属性/元素

json - CMakeLists 解析文件

sql-server - 捕获 SQL Server 中前 100 个 CoSTLy 查询(<2014 年)

sql-server - 删除 SQL 行,忽略所有外键和约束