问题标签 [for-xml-path]

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 回答
93 浏览

tsql - XML 路径与更多连接

我需要一个列出订单和相关数据的网格。(纯属虚构示例)

为简单起见:

网格应显示每个订单,以及每个集合的文本描述,例如:

现在,这个网格可能有多达 200 行。

这个问题是,我们使用的定制 ORM 在将多 PK 结果集映射到唯一对象时存在一些主要的缓慢问题。

例如。

即使结果集中涉及 1 个集合,它也存在此问题。查询本身执行得非常好和快,问题是映射。

所以,我真的有两个选择(据我所知):

  1. 获取订单结果集,对于结果集中的每个订单,获取零件、获取目的地、获取供应商等。这反过来意味着对数据库的 601 次调用。

  2. 使用FOR XML PATH将每个集合组合在一起。意味着更多的 CPU 密集型和读取繁重的初始查询。

我想知道,首先,上述两种方法中哪一种看起来更好,其次,是否还有其他更好的方法我没有想到。问题是两者都必须使用垃圾对象映射器(不能仅为此查询的结果集创建我自己的 DAL 映射过程)。

有任何想法吗?

谢谢。

0 投票
1 回答
4261 浏览

sql-server - 使用 T-SQL FOR XML PATH 删除空 XML 节点

我正在使用FOR XML PATHSQL Server 2008R2 中的表构造 XML。XML 必须按如下方式构造:

根据模式文件,InnerContainerElement是可选的,而InnerNodeOne是必需的。架构文件不是我设置的,非常复杂,相互引用并且没有明确的 XSD 命名空间,因此我无法轻松地将它们加载到数据库中。

XML 必须从使用以下查询填充的表中创建:

我可以想到两种使用FOR XML PATH.

1) 使用“InnerContainerElement”作为 XML 子查询的命名结果:

2) 使用“InnerContainerElement”作为 XML 子查询的输出元素,但不命名:

但是,它们都没有给出期望的结果:在这两种情况下,结果看起来像

每当InnerContainerElement为空时,它仍然显示为空元素。根据架构,这是无效的:只要元素InnerContainerElement在 XML 中,InnerNodeOne也是必需的。

我如何构建我的FOR XML PATH查询,InnerContainerElement只要它是空的就会被忽略?

0 投票
1 回答
234 浏览

sql - I want generate XML file in a hierarchical form

I have a table like this (Actually it contains more 6000 records)

DDL:

Inserts:

And i want to generate a XML file like this(Simplified tree like structure)

I don't want to use recursion as it would downgrade the performance dramatically as this table has more than 60000 records in table.

I would be glad if i get the output in same format, since i will be using this output XML to send a request.

And more importantly it will be dynamic in nature.

0 投票
2 回答
12078 浏览

sql - 通过 for xml 路径连接字符串

你好!今天我学习for xml path了在 mssql 中连接字符串的技术。由于我从未在 mssql 中使用过 xml,而 google 也没有帮助,所以我需要问你。

让我们想象一下默认情况。我们需要连接表中的一些字符串:

所以我得到这样的东西:

行。它工作正常。但我有两个非常相似的连接块。不同之处在于结果字符串的样子:

  • [str1], [str2], [strn]
  • isnull([str1], 0) as [str1], isnull([str2], 0) as [str2], isnull([strn], 0) as [strn]

因此,我可以使用不同的字符串构造函数编写 2 个非常相似的代码块(已经完成,顺便说一句),或者尝试将以前的代码扩展为包含 2 种构造函数的 xml 变量,然后通过 xml 节点类型连接。做第二种方式我遇到了一些问题 - 我写了这个:

但它会引发错误"XQuery [value()]: 'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'"
替换,例如,'/name'to'/name[1]'或任何其他'/name[x]',将仅返回第 x 个“名称”记录,但不是所有连接的“名称”记录。
[问题]:是否有可能像我想要的那样以第二种方式解决问题,如果可能,那么如何解决?
[免责声明]:这个问题现在对我来说并不是很严重(第一种方式有点丑但也很好),但是如何过来看起来很有趣:) 谢谢!

0 投票
0 回答
89 浏览

sql-server - 使用 FOR XML 返回子查询

我正在执行下面的子查询作为 SQL Server 2008 中 SELECT 语句中的参数。这样做是否有任何缺点来获取父级的子查询并在返回时在服务器上解析它。似乎很容易。

0 投票
3 回答
47613 浏览

xml - 使用“FOR XML PATH”时如何避免字符编码?

我希望从 SQL Server 2005 表中创建一个以逗号分隔的值列表,就像在JanetOhara 的问题中一样。我使用的查询类似于techdo 对问题的回答中提出的查询。

一切正常,除了值列表被 XML 编码。应该是什么:

而是返回为:

在 SQL Server 中使用“FOR XML”时,有没有办法禁用 XML 字符编码?

0 投票
1 回答
8814 浏览

tsql - TSQL:FOR XML PATH('') 未能分组

FOR XML PATH('')我正在尝试在 TSQL 中使用特定列对列值进行分组。这是两种情况下的结果(请注意,不带 XML 代码 - 即:SELECT * FROM @xml- 与带 XML 代码相同):

根据这篇文章这篇文章(请注意,第二篇文章省略了GROUP BY,我不确定作者如何在没有它的情况下成功实现这一点 - 我已经尝试过,它只生成所有值),语法应该是如下图所示:

几个小时后,在这些示例和上面的代码之间,我看不到我在语法上的错误,但我收到错误“列'@xml.Animal'在选择列表中无效,因为它不是包含在聚合函数或 GROUP BY 子句中。” 请注意,如果我不使用 GROUP BY 子句,它仍然不会以适当的方式生成值。另一双眼睛会很有用。

0 投票
1 回答
346 浏览

c# - SQL 查询 - 如何使用 gridview 的 XML 路径查询显示单行

我有 3 个表,我正在从 ( ModuleStaff, Staff, Roles) 中检索它们。我打算做的是在一行中显示网格视图中的数据。例如,staff(adrian)谁负责组号 1 和组 2 将显示为:

现在,我遇到了相同staff(adrian)但角色名称不同的问题,groupnumbers (1 and 2)即使导师和领导者的数据库数据为

我现在得到的:

它应该是什么:

这是我的代码:

我不太确定我应该如何查询 XML Path/sql 语句来给我基于rolenameand的组号staffname。谁可以帮我这个事?谢谢你。

0 投票
1 回答
666 浏览

sql-server - SQL Server 2008 XQuery 一对多问题

我在 SQL Server 中有两个具有一对多关系的表。我需要跨这些表执行 XQuery,以获得 xml 输出

表格(和样本记录)是:

实体_A

实体_B

我想获得执行 xquery 的输出是这样的:

这是我运行的 xquery:

但是我获得的输出是这样的(与所需的输出不同):

有什么建议吗?

此致

0 投票
1 回答
1286 浏览

sql - 对于 XML 显式嵌套数据不正确

终于回答了这个问题 - 下面概述了它会帮助一些必须使用 XML 显式的其他不幸的灵魂:)

我有以下代码输出下面包含的 XML。我遇到的问题是,每个request_status_update部分中应该有一个shipping_infoassociated_pin_pad部分,但它们都只出现在最后一个request_status_update中。

或者,如果有人能指出我用 XML PATH 进行这种嵌套的方法,那可能会更简单,我也完全赞成。我只是不知道如何获得一个标题部分,但仍然是多个 request_status_update 部分。XML PATH 似乎希望您总是在逐行的基础上做某事,而不仅仅是一个标题部分。

提前感谢您对此的任何帮助。我知道这是一个很长的代码(对此感到抱歉)

SQL 代码:

XML 输出:(仅包括 request_status_updates 部分,因为这是问题区域

预期输出:

使固定:

我需要添加这个 order by 子句,

此外,从对标签 4 的查询开始,我需要确保 RequestID 实际上包含在结果中,而不是 NULL,以便排序能够正常工作。

我还将研究使用应该比 XML EXPLICIT 更简单的 XML PATH,但到目前为止,这目前还有效。