XQuery 和节点 ID

2023-12-02

我有这个变量:

declare @xmlDoc XML

它存储了以下 xml:

<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
  <Table1>
    <Sharedparam>shared</Sharedparam>
    <Antoher>sahre</Antoher>
    <RandomParam2>Good stuff</RandomParam2>
    <MoreParam>and more</MoreParam>
    <ResultsParam>2</ResultsParam>
  </Table1>
  <Table1>       
    <RandomParam2>do you</RandomParam2>
    <MoreParam>think</MoreParam>
    <ResultsParam>2</ResultsParam>
  </Table1>
  <Table1>
    <Sharedparam>Last</Sharedparam>
    <Antoher> Set </Antoher>
    <RandomParam2> of </RandomParam2>
    <MoreParam>values</MoreParam>
    <ResultsParam>are here</ResultsParam>
  </Table1>
  <Table1 />
</NewDataSet>

我有一个用于获取数据的查询:

declare @xmlDoc XML
set @xmlDoc = '' -- Stack Overflow could not handle the xml all on one line.

SELECT   -- Param 1
         TBL.SParam.value('local-name((*)[1])', 'varchar(50)') as Param1Name,
         TBL.SParam.value('(*)[1]', 'varchar(100)') as Param1Value,             
         -- Param2
         TBL.SParam.value('local-name((*)[2])', 'varchar(50)') as Param2Name,
         TBL.SParam.value('(*)[2]', 'varchar(100)') as Param2Value, 

         -- Param3           
         TBL.SParam.value('local-name((*)[3])', 'varchar(50)') as Param3Name,
         TBL.SParam.value('(*)[3]', 'varchar(100)') as Param3Value,

         -- Param 4
         TBL.SParam.value('local-name((*)[4])', 'varchar(50)') as Param4Name,
         TBL.SParam.value('(*)[4]', 'varchar(100)') as Param4Value,

         -- Param 5
         TBL.SParam.value('local-name((*)[5])', 'varchar(50)') as Param5Name,
         TBL.SParam.value('(*)[5]', 'varchar(100)') as Param5Value

 FROM    @xmldoc.nodes('/NewDataSet/Table1') AS TBL(SParam)  

我需要一种方法来将结果添加到 xml 文件中的顺序。 (这是 Table1 的第一个实例,然后是第二个......)。

由于以下原因SQL 表变量限制,我无法使用身份列来保持这一点。 (由于其他原因,我不想使用临时表。)

我希望有一个很酷的 SQL XML 函数,它将返回某种内部分配的节点 ID。 (或其他类似的订购方式。)

请注意,我不控制此 XML 结构(我只是读者),因此我无法进行更改以添加 ID 属性。

任何建议都会很棒!

编辑/更新:

我真的很想要这样的数据:



1  |    SharedParam   |   shared
1  |    Antoher       |   sahre
1  |    RandomParam2  |   Good stuff
1  |    MoreParam     |   and more
1  |    ResultsParam  |   and more
2  |    RandomParam2  |   do you
2  |    MoreParam     |   think
2  |    ResultsParam  |   2
3  |    Sharedparam   |   Last
3  |    Antoher       |   Set 
.
.
.
  

但我还不够。我可以将其放入列中(或多或少),但我不知道如何进行编号。如果您有任何想法,我很乐意听到。

EDIT:
我想出了执行此操作的查询(在互联网的一些帮助下)。它看起来像这样:

SELECT  TBL.SParam.value('local-name(.)[1]', 'varchar(50)') as ParamName,
        TBL.SParam.value('(.)[1]', 'varchar(50)') ParamValue, 
        TBL.SParam.value('for $s in . return count(../*[. << $s]) + 1', 'int') ParamPosition,
        TBL.SParam.value('for $s in . return count(../../*[. << $s]) - 1', 'int') ParamIteration 
FROM    @xmldoc.nodes('/NewDataSet/Table1/*') AS TBL(SParam)

您可以使用数字表并位置()

 SELECT  N.Number as ID,
         -- Param 1
         TBL.SParam.value('local-name((*)[1])', 'varchar(50)') as Param1Name,
         TBL.SParam.value('(*)[1]', 'varchar(100)') as Param1Value,             
         -- Param2
         TBL.SParam.value('local-name((*)[2])', 'varchar(50)') as Param2Name,
         TBL.SParam.value('(*)[2]', 'varchar(100)') as Param2Value, 

         -- Param3           
         TBL.SParam.value('local-name((*)[3])', 'varchar(50)') as Param3Name,
         TBL.SParam.value('(*)[3]', 'varchar(100)') as Param3Value,

         -- Param 4
         TBL.SParam.value('local-name((*)[4])', 'varchar(50)') as Param4Name,
         TBL.SParam.value('(*)[4]', 'varchar(100)') as Param4Value,

         -- Param 5
         TBL.SParam.value('local-name((*)[5])', 'varchar(50)') as Param5Name,
         TBL.SParam.value('(*)[5]', 'varchar(100)') as Param5Value

 FROM master..spt_values as N
    cross apply @xmldoc.nodes('/NewDataSet/Table1[position()=sql:column("N.Number")]') AS TBL(SParam)
 where N.type = 'P' and
       N.number between 1 and @xmlDoc.value('count(/NewDataSet/Table1)', 'int')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XQuery 和节点 ID 的相关文章

  • Oracle中如何选择前100行?

    我的要求是获取每个客户的最新订单 然后获取前100条记录 我编写了一个如下查询来获取每个客户的最新订单 内部查询工作正常 但我不知道如何根据结果获得前 100 名 SELECT FROM SELECT id client id ROW NU
  • 如何从连接字符串中提取数据库名称,而不考虑 RDBMS?

    我正在研究一个不知道正在使用的 RDBMS 的课程 当然 应用程序的其余部分都清楚这一点 连接字符串是此类的输入 我需要数据库名称 无论 RDBMS 如何 如何从连接字符串中提取数据库名称 我读到以下问题 如何使用 SqlConnectio
  • TSQL - 执行CLR权限

    我从 CLR net Assembly 获得了一个 sql 过程 该过程在执行时返回错误 Msg 6522 Level 16 State 1 Procedure sp HelloWorld Line 0 A NET Framework er
  • 了解涉及 3 个或更多表时 JOIN 的工作原理。 [SQL]

    我想知道是否有人可以帮助我提高对 SQL 中 JOIN 的理解 如果它对问题很重要 我会特别考虑 MS SQL Server 取 3 个表 A B A 通过某些 A AId 与 B 相关 和 C B 通过某些 B BId 与 C 相关 如果
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1
  • 如何将此本机 SQL 查询转换为 HQL

    所以我有这个很长的复杂的 Native SQLQuery string hql SELECT FROM SELECT a rownum r FROM select f2 filmid f2 realisateurid f2 titre f2
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • 结果集未打开。验证自动提交已关闭。阿帕奇·德布里

    我的数据库使用 apache derby 我能够对数据库执行插入操作 以下是尝试显示我唯一的表 MAINTAB 的内容的代码摘录 java sql Connection 的实例是 dbconn ResultSet word Statemen
  • 将子查询的结果插入表中并带有常量

    相关表格的概要如下 我有一个表 我们称之为联接 它有两列 都是其他表的外键 我们将这两列称为 userid 和buildingid 因此 join 看起来像 join userid buildingid 我基本上需要在这个表中插入一堆行 通
  • 从 SQL Server 2012 查询结果中减去小时数

    我正在 SQL Server 2012 Management Studio 中的警报系统信号自动化平台数据库上运行查询 但遇到了一些问题 我的查询运行得很好 但我无法将结果细化到我想要的水平 我正在选择一些格式为的列DATETIME 我只想
  • 从VBA中的数组批量插入到sql中

    我正在尝试在 Excel 中构建一个按钮 将所选区域上传到 SQL Server 中的表中 第一行将自动视为列标题 这件事该怎么继续下去呢 我想要的是简单和超快的上传 这是我的想法 我将选择选定的区域 然后将其保存为 txt 文件 然后对其
  • INFORMATION_SCHEMA 与 sysobjects

    在 SQL Server 中 INFORMATION SCHEMA 和 sysobjects 之间有什么区别 其中一个是否比另一个提供更多信息 或者它们通常用于不同的用途 sysobjects 与 sys objects 相同吗 如果不是
  • SQL 用新值替换旧值

    我有一个名为tbl Products 其中有一列名为articlenumber并且充满了像这样的数字s401 s402 etc 我生成了一个包含新商品编号的列表 它将替换旧的商品编号 s401 I00010 s402 I00020 s403
  • 仅从数据库获取我想要的数据但保留结构

    我正在尝试在 powerbi 上执行此操作 但我想这只是基本的 SQL 我想将我的数据导入到 powerBi 中 但使用一些 id 对其进行过滤 我们以这个例子为例 我与一些公司有数据库 表1 每个公司都有建筑物 表2 每个建筑物有员工 表
  • 删除原始数据中部分重复的记录

    我需要删除表中时间间隔为 1 或 2 分钟或相同且必须相同的所有记录ID但保留第一个记录 ID Time SN SD WE FW 10 2014 06 30 19 17 37 000 I 0 100 0 10 2014 06 30 19 1
  • Mysql为简单频繁查询创建排序索引性能

    我正在处理一个包含大约 400 万条消息条目的 mysql 表 并尝试根据时间戳选择最新的 50 条消息 另一个要求是返回的消息不以固定前缀开头 问题是单个查询大约占用 25 的 cpu 并且最多需要 1 5 秒 该查询经常由多个客户端执行
  • 从多个表中选择 - 一对多关系

    我有这样的表 表产品 身份证 姓名 表格图像 产品 ID 网址 订单号 表价 产品 ID 组合 货币 价格 表数量 产品 ID 组合 数量 表 Product 与其他表是一对多关系 我需要查询表并得到类似这样的结果 伪数组 ProductI
  • 为什么 sql 字段名称中不应该包含逗号?

    人们一直告诉我列名中不应包含空格 我只是想知道 这是为什么 这是我为学校创建的一些数据库表遇到的问题 字段名称包括 Preble 和 Darke 相反 它们需要是 普雷布尔县 俄亥俄州 和 达克县 俄亥俄州 如果它们是行名称 我只需创建一个

随机推荐

  • 有没有办法从 JS 中的图像手动创建 Base64code

    我在 html 画布上绘制图像 这就是计算像素的方法 for var i 0 i lt data length i 4 var red data i red var green data i 1 green var blue data i
  • 如何使用 OGNL 索引引用运算符

    使用 OGNL 您可以引用操作上下文对象 例如 application session root action request parameters attr 以及动作上下文 context 该框架将 OGNL 上下文设置为我们的 Acti
  • NodeJS HTML 和 CSS

    我不知道为什么 CSS 在这里被忽略 为了能够在 HTML 中使用 CSS 我需要对 NodeJS 做一些特定的事情吗 它与标签的 type 属性有什么关系吗 NodeJS 代码 app get function request respo
  • 在 IntelliJ 中可以实现而在 Eclipse 中无法实现的事情?

    Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我听说有人改变了其中一种方式 并且对其中一种发誓 作为 Eclipse 的忠实粉丝 但还没有时间尝试 IntelliJ 我有兴趣从
  • printf,如何为整数插入小数点

    我有一个UINT16说的无符号整数 4455 312 560 or 70 如何使用 printf 在最后两位数字之前插入小数点 以便示例数字显示为 44 55 3 12 5 60 or 0 70 如果没有 printf 解决方案 是否有其他
  • 如何在下拉淘汰赛js中预先选择一个选项

    我已经查看了其他问题 但无法让我的选择框正常工作 绑定下拉 选择 列表的初始 默认值 我有以下游戏对象 function Game visitingTeamDetails homeTeamDetails game if arguments
  • 如何在android中绘制球体

    如何使用 OpenGL ES 在 Android 中绘制球体 您的问题可能与以下问题重复 在OPENGL ES中绘制球体时出现问题 在 OpenGL ES 中绘制球体 我建议您在提出问题之前先做一些研究 因为有很多教程可用于相同的内容 ht
  • 有没有办法禁用 Swing 应用程序的 Mac OS Retina 缩放?

    我们有一个相当复杂的应用程序 需要尽可能多的屏幕空间 自然 视网膜显示屏 Mac Book 非常适合此目的 然而 在 Swing 中这些设备似乎使用的是点而不是像素 它们允许我将图标更改为所讨论的更高分辨率版本here 但由于我们做了很多复
  • 如何在Python中的进程之间传递堆栈跟踪?

    我正在尝试创建一个 python 装饰器 它接受带有 args 和 kwargs 的函数 在新进程中执行它 关闭它并返回函数返回的任何内容 包括引发相同的异常 如果有 目前 如果函数没有引发异常 我的装饰器可以正常处理函数 但无法提供回溯
  • 一段时间后关闭 tkinter 窗口

    我有一段Python代码 应该打开一个新窗口一段时间 然后关闭该窗口 该窗口是通过单击按钮触发的 这是我所拥有的基础知识 def restore self self restore Toplevel message Select an av
  • 如何通过命令行删除 PostgreSQL 数据库[关闭]

    Closed 这个问题是无关 目前不接受答案 我正在尝试删除数据库并通过命令行创建一个新数据库 我使用登录psql U username然后做一个 connect template1 后面跟着一个DROP DATABASE database
  • 如何使用 PowerShell 修改 SharePoint 列表中的项目值

    如何使用 PowerShell 修改 SharePoint 列表中的项目值 当我尝试以下操作时 splist GetItems ForEach Object Write Host Item if Item eq null SPFileCol
  • 为什么动态添加的图像的offsetWidth总是0

    我正在通过 Javascript 添加图像 图像可以是任何尺寸 我想获取尺寸 宽度和高度 问题是 offsetWidth and style width始终为 0 这是一些要复制的代码 const container document ge
  • 当我重写 CreateParams 时,RichTextBox 不显示所有数据

    I foundNoBugz 编写的一些旧代码 汉斯 帕桑特 如果我理解的话 会强制 Richtextbox 使用 RTF 5 0 而不是 4 0 基本上它只是一个继承的类RichTextBox并覆盖CreateParams财产本身 priv
  • 用于多字节字符编码的 ucfirst() 函数

    我问过strtolower功能 但是当使用外来字符时 它不会将它们转换为大写 所以我必须使用 mb strtolower a utf8 但是如果我想使用我能做什么ucfirst 功能 我还没有找到任何类似的功能 可以在其中设置编码类型 没有
  • CSS 背景。将内容盒与盖子组合在一起

    如果我同时使用background origin content box 和背景大小 封面 在带有一些填充的元素上 背景图像仍然覆盖底部填充 在最新版本的 Safari Chrome Firefox 和 IE 中 div backgroun
  • 运行 LLVM 示例时遇到问题

    我在这个问题上挣扎的时间比我愿意承认的要长 并且非常感谢一些帮助 我正在尝试做一个涉及构建链接器和调度程序的项目 并且认为如果我可以使用 LLVM 中已经构建的一些功能 那就太好了 我正在使用 LLVM 10 为了开始使用 我做了一些阅读并
  • GL_DEPTH_TEST 和透明纹理的渲染故障

    从一个角度看 我的灌木看起来像这样 从另一个角度看 它们是这样的 我的理论是 当从第一个角度看灌木时 灌木后面的所有块都已经画好了 所以当绘制灌木时 它只是将它们绘制在上面 然而 从另一个角度来看 它基本上是先尝试绘制灌木 然后当 它去绘制
  • 对于无法使用 astype 进行转换的值使用 NaN

    我有一个非常大的 Pandas DataFrame 如下所示 gt gt gt d pd DataFrame a 1 U 3 4 gt gt gt d a 0 1 1 U 2 3 4 目前该列设置为object gt gt gt d dty
  • XQuery 和节点 ID

    我有这个变量 declare xmlDoc XML 它存储了以下 xml