gpt4 book ai didi

sql - 将 XML 切碎并合并到单列中

转载 作者:数据小太阳 更新时间:2023-10-29 02:40:01 27 4
gpt4 key购买 nike

对于下面示例中的所有参数值,生成连接到单个列的输出的简单方法是什么,此 xml 中没有 ns,我使用的是 SQL Server 2012。

我尝试获取此输出,在带有 xml 示例的代码段下方生成 3 列,我想生成 1。

100 | Param1
,Param22
,Param3322

XML 和代码:

DECLARE @xml XML = '<Parameters>    
<Parameter>
<Name>Param1</Name>
</Parameter>
<Parameter>
<Name>Param22</Name>
</Parameter>
<Parameter>
<Name>Param3322</Name>
</Parameter> </Parameters> '

SELECT 100 id
,@XML xmlinfo
INTO #t -- drop table #t -- select * from #t

DECLARE @xml XML = (
SELECT xmlinfo
FROM #t
)

SELECT (
SELECT ID
FROM #t
) AS ID
,X.STockData.query('Name[1]').value('.', 'Varchar(10)') AS 'Parameter'
---CONCAT(X.STockData.query('Name[1]').value('.','Varchar(10)'),X.STockData.query('Name[2]').value('.','Varchar(10)')) AS 'Parameter'
FROM @xml.nodes('Parameters/Parameter') AS X(StockData)

最佳答案

您可以使用 XQuery for循环从 XML 字段构造逗号分隔值,例如:

SELECT 
t.ID as ID
, CAST(t.xmlinfo.query('
for $p in Parameters/Parameter
return
if ($p is (Parameters/Parameter[last()])[1])
then string($p/Name[1])
else concat($p/Name[1], ", ")
')
AS VARCHAR(MAX)
) as Parameter
FROM MyTable as t

Sqlfiddle Demo

上面的 XQuery 只是循环遍历 Parameter元素,并返回 Name当前的子元素 Parameter是最后Parameter , 否则返回 Name用逗号连接。

关于sql - 将 XML 切碎并合并到单列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059779/

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