如何在 SQL 中拆分两个具有相同子名称的 xml 标签
How to break up two xml tags with the same subchild names in SQL
我创建了一个脚本,它从 SQL 中的 table 获取数据并生成 XML 输出。 2 个标签的父标签、子标签和子标签都是相同的。 SQL 脚本将它们输出为一个 XML 值而不是 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 的列并一个接一个地构建它们。
- 嗯,有个
<RequestHeader>
开
- 还有一个
<RequestID>
可以打开
- 再次
<RequestHeader>
,仍然开放,没什么可去的
- 下面还有
<Action>
...哦,我们必须关闭<RequestID>
并打开一个新的<Action>
- 等等...
在您的代码中,<Flag>
仍然是打开的,因此内容被写入打开的元素。
我的改变会让引擎思考
- 啊,往上一层了,先关闭
<Flag>
...哎呀,没啥可写的了...
- 现在
<Flag>
的东西已经打不开了,我们必须重新打开一个(新的)<Flag>
节点
- 等等...
我创建了一个脚本,它从 SQL 中的 table 获取数据并生成 XML 输出。 2 个标签的父标签、子标签和子标签都是相同的。 SQL 脚本将它们输出为一个 XML 值而不是 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 的列并一个接一个地构建它们。
- 嗯,有个
<RequestHeader>
开 - 还有一个
<RequestID>
可以打开 - 再次
<RequestHeader>
,仍然开放,没什么可去的 - 下面还有
<Action>
...哦,我们必须关闭<RequestID>
并打开一个新的<Action>
- 等等...
在您的代码中,<Flag>
仍然是打开的,因此内容被写入打开的元素。
我的改变会让引擎思考
- 啊,往上一层了,先关闭
<Flag>
...哎呀,没啥可写的了... - 现在
<Flag>
的东西已经打不开了,我们必须重新打开一个(新的)<Flag>
节点 - 等等...