簡體   English   中英

更新給定屬性的 SQL XML 字段節點值

[英]Update a SQL XML Field node value for a given attribute

我有一個具有以下格式的表格:

int IndexField
xml ConfigField

ConfigField 字段值可能類似於

 <Parameters>
      <Parameter Type="Config" Name="Prefix">hd</Parameter>
      <Parameter Type="Config" Name="PgNumber">2</Parameter>
      <Parameter Type="Config" Name="IsValid">False</Parameter>
    </Parameters>

我想知道 SQL Server 語法來修改參數 XML 節點的PgNumber值從 2 到 3 where IndexField = 22

謝謝

您可以使用函數modify()和更正 XQuery 來設置您需要的值。 雖然語法相當棘手。 在您的情況下,您應該能夠使用這樣的查詢:

UPDATE YourTableName
SET ConfigField.modify('replace value of (/Parameters/Pararameter[@Name="PgNumber"]/text())[1] with "3"')
WHERE IndexField = 22

這是傳遞給 SQL Server 的modify()方法的一種可能的 XQuery 表達式,用於更新<Parameter Name='PgNumber'>元素的值:

UPDATE MyTable
SET ConfigField.modify('
        replace value of 
            (/Parameters/Parameter[@Name="PgNumber"]/text())[1] 
        with 3
    ')
WHERE IndexField = 22

Sqlfiddle Demo

請注意,在 XPath/XQuery 中,您需要將@放在屬性名稱的開頭以引用 XML 屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM