问题标签 [xml-dml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
353 浏览

sql-server - 使用通配符的 T-SQL xquery .modify 方法

我在 SQL Server 2014 中工作。我创建了一个存储过程来处理它,最后,获取最终查询输出并将其格式化为 XML。由于过程中逻辑的性质,有时必须从最终的 XML 输出中删除一个节点。这是 XML 输出的示例(为简洁起见,我没有包括根节点;希望它们不会被要求回答我的问题):

在该过程中,我的代码查看了上面的 XML 结构并在它不应该存在时删除了一个节点,因为修改 xml 比调整查询输出更容易。这是该代码的示例:

最后一个命令是我无法弄清楚如何工作的命令。我需要做的就是寻找元素“DrugConceptType”以字符串“RxNorm”开头的实例,因为可能出现多个版本的字符串。

我已经详细搜索过 Google 和 StackOverFlowed,但也许是因为我在这方面缺乏经验,我没有正确地提出这个问题。

是否有一种相对简单的方法来重写上面的最终 .modify 语句以在“RxNorm”之后使用通配符?

0 投票
1 回答
604 浏览

sql-server - MSSQL 2012:使用变量删除 XML 属性

下午好,

我想通过使用 TSQL 变量来删除 XML 属性。这是一个最低限度的工作示例(TSQL 代码):

这给出了所需的输出:所有属性“desc”已被删除:

但是,我想定义一个 TSQL 变量

如何将它传递给 XQuery 修改操作?我可以在 XML DML 中使用sql:variable("@attr"),但是如何使用它来处理属性?

谢谢你的帮助!

0 投票
2 回答
137 浏览

sql-server - 使用来自另一个链接表的 XML 片段的 T-SQL XML 更新

我正在寻找一种方法来更新(.modify('insert into..') 具体而言)表中的 XML 列,其中包含来自由外键链接的另一个表的 xml 片段。

例如,我的表结构如下所示(简化):

表结构

  1. 每个表中的第 1 到第 5 字段可以忽略;他们的唯一目的是解释字段 Xx。
  2. 每个表中的字段 Xx 被定义为 XML,并预先填充了一个 XML 片段,该片段包含来自表中的字段的标记,表名。XML 片段在此列表之后描述。
  3. 表 B 和表 C 有一个外键 FK_A,将它们链接到表 A。表 A - B 和表 A - C 是一对多的(A 中的一条记录可以有 B 和 C 中的多条记录)。

现在,在我需要实现之前的 Xx 字段样本值:

这里的问题是,如何通过将所有 XB 和 XC 作为第一个(或最后一个)插入相应的 XA 来更新表 A?我更喜欢单个操作来更新整个表。

操作后,XA 应如下所示:

到目前为止我尝试了什么?

到目前为止,我最好的领导是分而治之的方法(一个两部分的解决方案,这是行不通的)。

编辑:

很抱歉没有提供任何文本值来复制粘贴。开始了。

这仅使用表 B 和表 C 中的第一个 XML 片段更新 XML。

更新:对于可能遇到此问题的任何人,请查看@Shnugo 的答案以及标记的答案。两种方法都很完美。我将@gofr1 的解决方案标记为答案,仅仅是因为他是第一个回复的。未来任务猎人的另一个考虑因素是您是否喜欢 CTE 或子选择(正如 Shnugo 指出的那样)。

0 投票
3 回答
1074 浏览

sql-server - 使用 XML-DML 在现有实例中动态插入 XML 节点位置

如果可以在 SQL Server (2012) 中的现有 xml 实例中动态插入 xml 节点,我无法找到任何文档。我知道您可以插入或替换条件值,但如果插入位置可以根据某些条件动态完成,似乎没有任何文档。例如,假设我有这个 XML-DML 调用:

关键字后面列出的节点after是有条件的修改是否是有效的语法?以下是我所指的示例:

动态选择位置的唯一方法是IF..ELSE在 XML DML 语句之外有语句,还是我的示例 XML-DML 有效?

编辑示例 XML:

我知道结构并不理想。应该是<Contacts><Contact Type="PRIMARY" Id="1234">...</Contact>...</Contacts>,但想看看动态插入位置是否可能在 DML 语句中。这个问题可以使用光标,因为它可以用于一次性更新。

0 投票
2 回答
3083 浏览

sql - 使用 SQL Server modify('insert') 将数据附加到 xml 列

考虑以下情况。我有下表

GoldenEgg 样本数据:

金蛋表

SubscriptionData_XMLSubscriptionID 6070 的数据:

我想将每个 SubscriptionID 的所有帐号附加到<Value>SubscriptionData_XML 列中已经存在的 xml 节点,并且我不想添加 xml 中已经存在的帐号。

因此对于 SubscriptionID 6070 帐号 39448474 应该只在 xml 中列出一次,如下所示:

0 投票
1 回答
953 浏览

xml - 如何使用 XQuery 更新 XML 变量中的属性值?

尝试更新包含在变量中的 XML 中的一个属性:

在 .上尝试了有和没有下标@AddressLine1[1]

这会引发错误:

Msg 2337, Level 16, State 1, Line 8
XQuery [modify()]: 'replace' 的目标最多只能是一个节点,找到'element(abc{ http://abcsystems.com/ }:PostalAddress,xdt :无类型) *'

PostalAddress整个 XML中只有一个元素。错误告诉我什么?

0 投票
1 回答
76 浏览

sql - 如何排除多个节点,因此其中一个排除将使用 XML DML 重新排列其属性?

这是此已发布问题的参考,因为我正在寻找重新排列<pos>节点内属性的值<est_mat>,因此第一个节点<est_mat>将拥有<pos>10</pos>,然后第二个<est_mat>节点将拥有<pos>20</pos>,依此类推。我在提到的已发布参考资料中的一位用户的帮助下得到了这个查询。因此,假设以下 xml 结构:

这个查询:

<pos>如上所述,如何通过对该属性进行排序来再次生成结构?

目前查询抛出相同的 xml 结构而不改变<pos>

0 投票
2 回答
45 浏览

sql - 使用 SQL 将多个分组的 xml 文档插入到单个 xml 文档中

我有两张桌子

tmpEntityAddress

tmpEntityAddresses

我想将各种地址文档分组并插入到第二个表中的单个地址文档中。粗略的基本架构如下所示:

我无法完全理解如何使用 XML DML 语言功能在 SQL 中执行此操作,例如 XML 插入等https://docs.microsoft.com/en-us/sql/t-sql/xml/ xml-数据-修改-语言-xml-dml

我在想我可以做到以下几点:

但它似乎只从#tmpEntityAddress 添加一行,这不是我想要的,因为我需要整个集合。

这可以用 SQL 实现吗?如果是这样,如何实现?

0 投票
2 回答
1809 浏览

sql-server - SQL 替换一个空 xml 值

我是 sql 的初学者,我不知道如何找到解决问题的方法。

我有一个包含项目的表,一列包含 xml 值。我想检查一个字段是否存在并更新它。

我找到了一种修改现有 xml 值的方法,但是当它为 NULL 时它不起作用

有我的代码:

0 投票
1 回答
77 浏览

sql-server - 使用 XML.Modify 如何在现有节点下插入节点

使用 SQL 和函数 xml.modify 是否可以在特定节点下添加一个新节点?

这是我的 XML

我目前有

我需要在测试 10 下获得测试 11,而不是在同一级别

谢谢你