如何在t-sql中读取xml?

2023-11-29

谁能告诉我如何从以下 xml 中选择值: 我想获得如下行: Col1:键,Col2:键,Col3:值

1 1 value
1 2 value2
1 3 value3

2 4 value4
2 5 value5
2 6 value6

这是 XML:

<root>
  <item>
    <key>1</key>
    <value>
      <params>
        <item>
          <key>1</key>
          <value>value</value>      
        </item>
        <item>
          <key>2</key>
          <value>value2</value>     
        </item>     
        <item>
          <key>3</key>
          <value>value3</value>     
        </item>     
      </params>
    </value>
  </item>
  <item>
    <key>2</key>
    <value>
      <params>
        <item>
          <key>4</key>
          <value>value4</value>     
        </item>
        <item>
          <key>5</key>
          <value>value5</value>     
        </item>     
        <item>
          <key>6</key>
          <value>value6</value>     
        </item>     
      </params>
    </value>
  </item>  
</root>

假设您在 T-SQL 变量中有此 XML - 那么您可以使用以下代码片段:

DECLARE @input XML = '...(your XML here).....'

SELECT
    Key1 = Item.value('(key)[1]', 'int'),
    Key2 = Item2.value('(key)[1]', 'int'),
    ItemValue = Item2.value('(value)[1]', 'varchar(50)')
FROM 
    @input.nodes('/root/item') AS T(Item)
CROSS APPLY
    item.nodes('value/params/item') AS T2(Item2)

这给了我一个输出:

Key1  Key2  ItemValue
 1     1     value
 1     2     value2
 1     3     value3
 2     4     value4
 2     5     value5
 2     6     value6  

方法如下:

  • 获取列表<item>下的节点<root>作为您的第一个“XML 节点列表”,其中第一个.nodes()XQuery 方法,并提取值<key>XML 片段中的 XML 元素Key1

  • 使用以下命令获取该 XML 片段内的 XML 节点的“嵌套”列表value/params/itemXPath,获取子行 - 并从中提取值<key> and <value>从那些嵌套的子 XML 片段中Key2 and ItemValue

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在t-sql中读取xml? 的相关文章

  • 使用 Microsoft SQL Server 管理复制表

    需要使用复制表Microsoft SQL Management Studio 2008 TABLE 还需要复制所有表行 主键 ID 在 SSMS 中打开一个新的查询窗口 然后执行如下操作 SELECT INTO NewTable FROM
  • 在 SSMS 中创建架构

    我知道在 SQL 中创建模式非常容易 CREATE SCHEMA
  • 确定表的行大小

    如何确定表的最大行大小 我正在寻找一个可以执行此操作的工具或脚本 这样我就不必手动添加每列的大小 我的目标是生成一份太宽表格的报告 以便我们可以考虑重组它们 我知道我们有几个太宽 每个 8K 页面只能容纳 1 行 但我想找到其余的 另一种方
  • SQL Server 表不使用默认值

    我正在使用 SSIS 包填充表 这个想法是 每当包上传到表时 它都会使用时间戳记该值getdate 当我打开它时 我的 DDL 看起来像这样 CREATE TABLE REPORTING post ssis table 1 validati
  • SQL Server 列的默认值

    当您使用列的默认值时SQL Server Management Studio表设计器 SSMS 更改您的默认值并在其周围添加括号 在所有版本和 SQL Server 的所有版本中 例如 如果您设置0作为默认值 此默认值更改为 0 我不知道为
  • sql server中的str_to_date函数?

    MySQL有一个函数叫STR TO DATE 将字符串转换为日期 http dev mysql com doc refman 5 1 en date and time functions html function str to date
  • T-SQL - 将日期时间更改为日期数据类型?

    我有一个专栏BirthDate在使用的表中datetime数据类型 目前 这些值类似于以下格式1987 12 30 00 00 00 000 我想更新该表的所有行 将它们更改为以下格式date数据类型 1987 12 30 我可以运行 SE
  • 用数组“插入”

    我想知道是否有一种方法可以在值列表上使用 插入 我正在尝试这样做 insert into tblMyTable Col1 Col2 Col3 values value1 value2 value3 所以 我想说的是 value2 将是一个字
  • TSQL 帮助 - 一种获取行第 N 列中的值的方法?

    我希望找到一种方法来获取数据集第 N 列中的值 因此 对于 N 6 我想要 SELECT Column6Value from MyTable where MyTable RowID 14 有没有办法在 SQL Server 2005 中实现
  • 在 Java 中实现 SQL CHECKSUM

    我在 SQL Server 2008 中有一个现有数据库 它通过存储过程为现有 PHP Web 应用程序执行用户身份验证 Web 应用程序向存储过程发送一个字符串 无论存储过程如何存储 并使用 SQL Checksum 检查该值 http
  • SQL - 我需要将总值划分为另一个表中的多行

    假设我在 SQL Server 2008 中有以下表 学校桌 School Id Course Id Total Students 1 Acct101 150 1 Acct102 100 2 Acct101 110 2 Acct102 13
  • 从日期时间中获取时间并将其转换为秒?

    我正在运行 SQL Server 2005 从技术上讲 我知道如何从 tsql 日期时间中获取时间 CONVERT VARCHAR 8 GETDATE 108 AS HourMinuteSecond 问题是我有一个日期时间字段 我需要本质上
  • 如何编写 T-SQL 查询来为每个客户端选择前 1 条记录?

    我有一个简单的脚本 我试图获取每个客户端的最新记录 我如何在 TSQL 中执行此操作 这是我目前的代码 但是 这只是总共选择了一条记录 此记录显示所有客户的最新记录 而不是每个客户 请问我该如何重新表述 SELECT TOP 1 C Cli
  • 如何将 nvarchar 解码为文本(SQL Server 2008 R2)?

    我有一个 SQL Server 2008 R2 表nvarchar 4000 field 存储该表的数据如下所示 696D616765206D61726B65643A5472 or 303131 011 我看到每个字符都编码为十六进制 我如
  • 如何在SQL Server中创建SYS模式的表?

    可以在 SQL Server 2008 sys 架构中创建表吗 我知道可以将表标记为系统 但不能更改架构 有什么窍门吗 您无法将自己的对象添加到 sys 架构中 无法在 sys 架构中创建用户定义的对象 盖尔 埃里克森 MS SQL Ser
  • 随机分配工作地点,每个地点不得超过指定员工人数

    我正在尝试在位置列表中选择唯一的随机发布 招聘员工位置 所有员工都已发布在这些位置 我正在尝试为他们生成一个新的随机发布位置 其 位置 条件为 员工新 随机位置将不等于他们的家乡 并且随机选择的员工及其职称必须小于或等于 地点 表中的 地点
  • 适用于 SQL Server 的 Microsoft ODBC 驱动程序 13:用户“sa”登录失败

    我正在安装 Informatica 的 MDM MDM 10 2 Jboss 6 4 EAP SQL Server 11 Windows Server 2008 R2 在创建模式 sip ant bat create bpm 期间 我收到此
  • Sql Server:如何在 WHERE 子句中使用 MAX 等聚合函数

    我想获得该记录的最大值 请帮我 SELECT rest field1 FROM mastertable AS m INNER JOIN SELECT t1 field1 field1 t2 field2 FROM table1 AS T1
  • SQL Server freetexttable 部分单词

    我第一次使用 SQL 自由文本搜索 我有点困惑为什么它会这样 我有一个联系人表 用户可以搜索并且我正在使用 SELECT Contacts Rank FROM FREETEXTTABLE Contacts O Roarty AS Conta
  • 重命名重复行

    这是我的问题的一个简化示例 我有一个表 其中有一个包含重复条目的 名称 列 ID Name 1 AAA 2 AAA 3 AAA 4 BBB 5 CCC 6 CCC 7 DDD 8 DDD 9 DDD 10 DDD 进行 GROUP BY 操

随机推荐