gpt4 book ai didi

sql-server - 使用Any(,)分隔符在单列中检索的XML值

转载 作者:行者123 更新时间:2023-12-03 17:26:19 25 4
gpt4 key购买 nike

我的Xml文件

<Detials xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Tests>
<Test Name="Test1" TotalMarks="100">95</Test>
<Test Name="Test2" TotalMarks="200">65</Test>
<Test Name="Test3" TotalMarks="150">95</Test>
<Test Name="Test4" TotalMarks="150"></Test>
</Tests>
</Detials>


我想查询回来以查看

TestName         |TotalMarks     |ScoreObtained** 
Test1,Test2,Test3,Test4|100,200,150,150| 95,65,95,|


我尝试了此操作,但无法按我想要的方式获得上面的结果,因为出现XQuery [T1.XMLData.query()]:“)”错误,所以出现了错误。

Select 

TestName = x.c.query ('STUFF((SELECT
'','' + fd.v.value(''(.)[1]'', ''varchar(100)'')
FROM
XMLwithOpenXML
CROSS APPLY
XMLData.nodes(''/Tests/Test/@Name'') AS fd(v)
FOR XML PATH('''')
), 1, 1, ''''')


From T1 s
Cross Apply s.XMLData.nodes('/Detials') AS x(c)


帮我解决这个问题!

谢谢,Jayendran

最佳答案

SELECT STUFF(@x.query('for $a in (*:Detials/Tests/Test/@Name) return <a>{concat(",", $a)}</a>').value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS ListOfName
SELECT STUFF(@x.query('for $a in (*:Detials/Tests/Test/@TotalMarks) return <a>{concat(",", $a)}</a>').value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS ListOfTotalMarks
SELECT STUFF(@x.query('for $a in (*:Detials/Tests/Test) return <a>{concat(",", $a)}</a>').value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS ListOfInnerHTML


Demo

注意:第一个 SELECT的格式可以如下:

SELECT STUFF(
@x.query('for $a in (*:Detials/Tests/Test/@Name)
return <a>{concat(",", $a)}</a>')
.value('.', 'NVARCHAR(MAX)'),
1, 1, '') AS ListOfName

关于sql-server - 使用Any(,)分隔符在单列中检索的XML值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44407151/

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