gpt4 book ai didi

sql - 如何使用 XQuery 将 xml 插入另一个 xml 中的节点?

转载 作者:行者123 更新时间:2023-12-02 16:57:33 25 4
gpt4 key购买 nike

我在 SQL Server 2005 的存储过程中有两个 xml 变量,例如@res、@student。

@res 包含

<Subject>English</Subject>
<Marks>67</Marks>
<Subject>Science</Subject>
<Marks>75</Marks>

@student 包含:

<Student> 
<Name>XYZ</Name>
<Roll>15</Roll>
<Result />
<Attendance>50</Attendance>
</Student>

我需要使用 XQuery 将 @res 的 xml 插入到 @student 变量中的节点 Result 中。

如何实现?

请帮忙。

最佳答案

在 SQL Server 2008 中,这非常简单:

DECLARE @res XML = '<Subject>English</Subject>
<Marks>67</Marks>
<Subject>Science</Subject>
<Marks>75</Marks>'


DECLARE @student XML = '<Student>
<Name>XYZ</Name>
<Roll>15</Roll>
<Result />
<Attendance>50</Attendance>
</Student>'


SET @student.modify('insert sql:variable("@res") as first into (/Student/Result)[1]')

SELECT @student

这给了我输出:

<Student>
<Name>XYZ</Name>
<Roll>15</Roll>
<Result>
<Subject>English</Subject>
<Marks>67</Marks>
<Subject>Science</Subject>
<Marks>75</Marks>
</Result>
<Attendance>50</Attendance>
</Student>

不幸的是,调用 .modify() 并在插入语句中使用 sql:variable 的功能仅在 SQL Server 2008 中引入 - 在以下版本中不起作用SQL Server 2005。

除了求助于丑陋的字符串解析和替换之外,我不明白如何在 SQL Server 2005 中做到这一点:

SET @student = 
CAST(REPLACE(CAST(@student AS VARCHAR(MAX)),
'<Result/>',
'<Result>' + CAST(@res AS VARCHAR(MAX)) + '</Result>') AS XML)

马克

关于sql - 如何使用 XQuery 将 xml 插入另一个 xml 中的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886565/

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