sql - 在 Sql Server 的 xml 中向第 n 个元素插入一个元素

标签 sql sql-server xml xquery

请考虑这个 XML:

<Employees>
    <Person>
        <ID>1000</ID>
        <Name>Nima</Name>
        <LName>Agha</LName>
    </Person>
    <Person>
        <ID>1001</ID>
        <Name>Ligha</Name>
        <LName>Ligha</LName>
    </Person>
    <Person>
        <ID>1002</ID>
        <Name>Jigha</Name>
        <LName>Jigha</LName>
    </Person>
    <Person>
        <ID>1003</ID>
        <Name>Aba</Name>
        <LName>Aba</LName>
    </Person>
</Employees>

我想编写一个获取数字的过程,然后将一个元素插入到第 n 个 Person 元素中。例如,如果 1 传递给我的过程,我将一个元素插入到第一人称元素中。

最佳答案

DECLARE @data XML =
'
<Employees>
    <Person>
        <ID>1000</ID>
        <Name>Nima</Name>
        <LName>Agha</LName>
    </Person>
    <Person>
        <ID>1001</ID>
        <Name>Ligha</Name>
        <LName>Ligha</LName>
    </Person>
    <Person>
        <ID>1002</ID>
        <Name>Jigha</Name>
        <LName>Jigha</LName>
    </Person>
    <Person>
        <ID>1003</ID>
        <Name>Aba</Name>
        <LName>Aba</LName>
    </Person>
</Employees>
'

DECLARE @offset INT = 2
DECLARE @value VARCHAR(100) = 'newvalue'

SET @data.modify('insert <NewAttribute>{sql:variable("@value")}</NewAttribute> as last into (/Employees/Person)[sql:variable("@offset")][1]')

SELECT @data

关于sql - 在 Sql Server 的 xml 中向第 n 个元素插入一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437904/

相关文章:

java - 在不知道 Java 结构的情况下解析 XML 文档

sql - 在数据库中存储一对多关系 - 数组或一对多关系?

sql - SQL Server中如何实现多重关系?

sql-server - 为什么我需要手动打开这个 .NET Core 数据库连接,而通常 Dapper 自动打开它?

sql-server - MS SQL Server 使用 select 插入表,同时输出到第三个表

c# - 使用特殊字符反序列化 XML 的快速方法

xml - 读取 XML 中的所有节点和元素 (VB.net)

mysql - SQL JOIN 多对多

java - 日期格式 SQL

mysql - 有两张表 - 一张用于选择,一张用于更新