我在 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/