如何在 SQL 中拆分具有相同子子名称的两个 xml 标

How to break up two xml tags with the same subchild names in SQL(如何在 SQL 中拆分具有相同子子名称的两个 xml 标签)
本文介绍了如何在 SQL 中拆分具有相同子子名称的两个 xml 标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个脚本,它从 SQL 中的表中获取数据并生成 XML 输出.父、子和子子标签对于 2 个标签都是相同的.SQL 脚本将它们作为一个 XML 值而不是 2 输出.

I have created a script which takes data from a table in SQL and generates an XML output. The parent, child and sub-child tags are all the same which for 2 tags. The SQL script is outputting them as one XML value instead of 2.

 SELECT
 Request.TransactionRef AS [RequestHeader/RequestID],
'Deal.Trial' AS [RequestHeader/Action],
'DoDealValidate' AS [RequestHeader/ActionFlags/Flag],
'DoDealDerive' AS [RequestHeader/ActionFlags/Flag] 

目前的结果是:

<ActionFlags>
<Flag>DoDealValidateDoDealDerive</Flag>
</ActionFlags>




<ActionFlags>
<Flag>DoDealValidate</Flag>
<Flag>DoDealDerive</Flag>
</ActionFlags>

推荐答案

只需在中间放置一些:

SELECT
 'blah' AS [RequestHeader/RequestID],
'Deal.Trial' AS [RequestHeader/Action],
'DoDealValidate' AS [RequestHeader/ActionFlags/Flag],
NULL AS [RequestHeader/ActionFlags],
'DoDealDerive' AS [RequestHeader/ActionFlags/Flag] 
FOR XML PATH('row');

背景:

引擎通过 SELECT 的列运行并一个接一个地构建它们.

The engine is running through the SELECT's columns and builds them one after the other.

  • 好吧,有一个要打开
  • 并且有一个要打开
  • 再次,还是打开的,没什么
  • 下面还有...哦,我们必须关闭并打开一个新的
  • 等等...
  • Well, there is a <RequestHeader> to open
  • and there is a <RequestID> to open
  • Again the <RequestHeader>, still open, nothin to to
  • and there is <Action> below... Oh, we must close the <RequestID> and open a new <Action>
  • and so on...

在您的代码中, 仍然是打开的,因此内容被写入到 open 元素中.

In your code the <Flag> is still open, therefore the content is written into the open element.

我的改变会让引擎思考

  • 啊,我们上移一层,所以我们先关闭...哎呀,没什么可写的...
  • 现在<Flag>有一些东西,它不再打开了,我们必须重新打开一个(新的)节点
  • 等等...
  • Ah, we move up one level, so we close the <Flag> first... Oops, there's nothing to write...
  • Now there is something for <Flag>, which is not open anymore, we have to re-open a (new) <Flag> node
  • and so on...

这篇关于如何在 SQL 中拆分具有相同子子名称的两个 xml 标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
SSIS: Model design issue causing duplications - can two fact tables be connected?(SSIS:模型设计问题导致重复-两个事实表可以连接吗?)
SQL Server Graph Database - shortest path using multiple edge types(SQL Server图形数据库-使用多种边类型的最短路径)
Invalid column name when using EF Core filtered includes(使用EF核心过滤包括时无效的列名)
How should make faster SQL Server filtering procedure with many parameters(如何让多参数的SQL Server过滤程序更快)
How can I generate an entity–relationship (ER) diagram of a database using Microsoft SQL Server Management Studio?(如何使用Microsoft SQL Server Management Studio生成数据库的实体关系(ER)图?)