【问题标题】:Deleting a parent node删除父节点
【发布时间】:2013-06-17 06:48:10
【问题描述】:

我在 SQL Server 的列中有以下 xml 片段

<ul>
   <li><a id="cat" href="cat.html">Cat</a></li>
   <li><a id="dog" href="dog.html">Dog</a></li>

我想删除带有&lt;a&gt; 标记和id="cat"&lt;li&gt; 标记

    DECLARE @id varchar(40) =  'cat'

    UPDATE  dbo.Pref
    SET     xmlPref.modify('delete /ul/li/a[@id=sql:variable("@id")]')
    WHERE   pref    = 1

因为它会留下&lt;li&gt;,所以效果不佳。

【问题讨论】:

    标签: sql sql-server xpath xml-dml


    【解决方案1】:

    移除表达式路径中的“a”元素并将其添加到条件中

    DECLARE @id varchar(40) =  'cat'
    
    UPDATE dbo.Pref
    SET xmlPref.modify('delete //ul/li[a/@id=sql:variable("@id")]')
    WHERE pref = 1
    

    SQLFiddle上查看演示

    【讨论】:

      【解决方案2】:

      如何在 SQL Server 中使用 replace 内置函数

      更新 dbo.Pref SET COLUMNNAME = REPLACE('要搜索的表达式','要搜索的字符串的一部分','替换字符串') 在哪里......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-04
        • 2021-06-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多