【问题标题】:Parsing multiple xml elements from an xmlstring in SQL server从 SQL Server 中的 xmlstring 解析多个 xml 元素
【发布时间】:2014-10-21 10:55:04
【问题描述】:

我输入的 xml 字符串是

<users><id>p1</id><id>p2</id><id>p3</id></users>

如果 id 与 xml 字符串中的匹配,我想编写一个更新查询来更新表中的“Request_Status”列

我试过这个说法:

Update login set 
            Request_Status='A'
            where
            EmpId in
            (
                SELECT Pers.value('(id)[1]', 'nchar(10)') as 'ID'
                FROM
                        @xmlUserId.nodes('/users') as EMP(Pers)
            )

这只会更新 ID p1 而不会更新其他 2。

我提到了这个,

How to loop and parse xml parameter in sql server stored procedure

(P.S我在这里的第一个问题,所以请原谅错误,帖子中的非常规元素)

【问题讨论】:

    标签: sql sql-server xml sql-update


    【解决方案1】:

    尝试将 XML 选择查询更改为如下:

    SELECT Pers.value('self::*', 'nchar(10)') as 'ID'
    FROM
            @xmlUserId.nodes('/users/id') as EMP(Pers)
    

    上面的查询应该返回 all &lt;id&gt; 元素内的&lt;users&gt; 元素

    [SQL fiddle demo]

    【讨论】:

    • @ShounakGujarathi 查看演示,它可以在您发布的输入 XML 字符串的情况下工作。创建一个新的小提琴来演示它是如何不起作用的,以便我们进一步检查
    • 是的,它似乎正在发挥作用。我无法在那里添加更新语句..(更新登录集 Request_Status='A' where EmpId in (SELECT Pers.value('self::*', 'nchar(20)') FROM @xmlUserId.nodes( '/users/id') as EMP(Pers) );
    • Dude nvm,我重新启动了 sql server,它工作正常。非常感谢。
    猜你喜欢
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多