gpt4 book ai didi

sql-server - 选择XML仅在几个具有相同名称的节点上多个

转载 作者:行者123 更新时间:2023-12-03 16:08:56 25 4
gpt4 key购买 nike

我正在尝试构造一条肥皂消息,并且能够使用一个选择来构造整个消息。除非问题是,仅在少数情况下,相同的节点名称会重复两次。

因此,例如,所需的输出结果应该像这样,有两个单独的id root节点:

<SoapDocument>
<recordTarget>
<patientRole>
<id root="1.2.3.4" extension="1234567" />
<id root="1.2.3.5.6" extension="0123456789" />
</patientRole>
</recordTarget>
</SoapDocument>


我试图用我对xpath的稀疏知识来构造节点名称,如下所示:

select
'1.2.3.4' AS 'recordTarget/patientRole/id[1]/@root',
'1234567' AS 'recordTarget/patientRole/id[1]/@extension',
'1.2.3.5.6' AS 'recordTarget/patientRole/id[2]/@root',
'0123456789' AS 'recordTarget/patientRole/id[2]/@extension'
FOR XML PATH('SoapDocument'),TYPE


显然,xpath命名不能像这样应用于列名 id[1]id[2]吗?我是否在这里遗漏了一些东西,还是应该使用不同的符号?构造所需结果的最简单方法是什么?

最佳答案

根据您的问题,我认为这不是表格数据,而是固定值,并且您正在创建医疗文档,大概是CDA。
试试这个:

SELECT 
(
SELECT
'1.2.3.4' AS 'id/@root',
'1234567' AS 'id/@extension',
'',
'1.2.3.5.6' AS 'id/@root',
'0123456789' AS 'id/@extension'
FOR XML PATH('patientRole'),TYPE
) AS [SoapDocument/recordTarget]
FOR XML PATH('')

结果:
<SoapDocument>
<recordTarget>
<patientRole>
<id root="1.2.3.4" extension="1234567" />
<id root="1.2.3.5.6" extension="0123456789" />
</patientRole>
</recordTarget>
</SoapDocument>

一些解释:中间的空元素允许您在一个查询中放置两个具有相同名称的元素。您可以通过多种方法将其添加到周围的标签中。这只是一种可能性。
更新
我想指出BdR的答案!很棒的发现,值得投票!

关于sql-server - 选择XML仅在几个具有相同名称的节点上多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47811543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com