【问题标题】:Update XML stored in a XML column in SQL Server更新存储在 SQL Server 中 XML 列中的 XML
【发布时间】:2013-05-07 00:22:30
【问题描述】:

我在 SQL Server 2012 中有一个示例表。我正在运行一些查询,但 .modify() XQuery 方法正在执行但没有更新。

这是桌子

为此只是尝试将设置更新为“NewTest”

这将执行,但没有更新!感谢您的帮助!

【问题讨论】:

    标签: sql-server sql-server-2008 tsql sql-server-2012


    【解决方案1】:

    由于您的 XML 文档中有一个 XML 命名空间 (xmlns:dev="http://www.w3.org/2001/XMLSchema"),因此您必须在您的UPDATE 语句中包含它!

    试试这个:

    ;WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org/2001/XMLSchema')
    UPDATE XmlTable
    SET XmlDocument.modify('replace value of (/Doc/@Settings)[1] with "NewTest"')
    WHERE XmlId = 1
    

    【讨论】:

      【解决方案2】:

      你应该在你的更新语法中声明一个命名空间。试试下面的语法

      Declare @Sample table
      (xmlCol xml)
      
      Insert into @Sample
      values
      ('<dev:Doc xmlns:dev="http://www.w3.org/2001/XMLSchema" 
                             SchemaVersion="0.1" Settings="Testing" Ttile="Ordering">
              <Person id="1">
                  <FirstName>Name</FirstName>
              </Person>
            </dev:Doc>')
       Select * from @Sample
       Update @Sample
       SET xmlCol.modify(
                        'declare namespace ns="http://www.w3.org/2001/XMLSchema";
                         replace value of (/ns:Doc/@Settings)[1]
                         with "NewTest"')
      
       Select * from @Sample
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 1970-01-01
        • 1970-01-01
        • 2014-03-23
        • 1970-01-01
        • 2014-12-08
        • 1970-01-01
        相关资源
        最近更新 更多