Sql-Server

在 XML 列中編輯單個條目的最簡單方法?

  • October 25, 2019

據我了解,MS SQL Server Management Studio 不允許通過 GUI 直接編輯/替換 XML 列中的條目(複製/粘貼不起作用等)。

替換 XML 列中的單個條目的最簡單選項是什麼?我必須對 XML 列值使用不同於 UPDATE/REPLACE 的東西嗎?

如果您只需要一次替換整個 XML,那麼您可以執行正常的 UPDATE,例如:

UPDATE yourTable
SET yourXML = '<yourNewValidXML/>' 
WHERE rowId = 1

如果您需要編輯單個屬性或元素,則可以使用 SQL Server 中 XML 數據類型的 .modify 方法來更新單個值。這是一個簡單的範例,可以幫助您入門:

DECLARE @t TABLE ( rowId INT IDENTITY PRIMARY KEY, yourXML XML )

INSERT INTO @t ( yourXML )
VALUES ( '<Users>
   <User Name="Bob"></User>
   <User Name="Mikhail"></User>
   <User Name="John"></User>
   <User Name="Sue"></User>
</Users>' )

SELECT 'before' s, DATALENGTH(yourXML) dl, yourXML
FROM @t
WHERE rowId = 1

-- Update one attribute
UPDATE @t
SET yourXML.modify('replace value of (Users/User/@Name[.="Bob"])[1] with "wBob"')
WHERE rowId = 1

SELECT 'after' s, DATALENGTH(yourXML) dl, yourXML
FROM @t
WHERE rowId = 1

如果您需要更多幫助,請發布您的 XML 的小樣本和您的預期結果。

引用自:https://dba.stackexchange.com/questions/75292