Cara termudah untuk mengedit satu entri di kolom XML?

9

Seperti yang saya mengerti MS SQL Server Management Studio tidak memungkinkan secara langsung mengedit / mengganti entri dalam kolom XML melalui GUI (salin / tempel tidak berfungsi dll.).

Apa pilihan termudah untuk mengganti satu entri di kolom XML? Apakah saya harus menggunakan sesuatu yang berbeda dari UPDATE / REPLACE untuk nilai kolom XML?

Mikhail
sumber

Jawaban:

22

Jika Anda hanya perlu mengganti seluruh bagian XML sekaligus, maka Anda dapat melakukan UPDATE yang normal, misalnya sesuatu seperti ini:

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

Jika Anda perlu mengedit atribut atau elemen individual maka Anda dapat menggunakan metode .modify dari tipe data XML di SQL Server untuk memperbarui nilai tunggal. Berikut ini contoh sederhana untuk membantu Anda memulai:

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

Jika Anda memerlukan bantuan lebih lanjut, silakan kirim sampel kecil XML Anda dan hasil yang Anda harapkan.

wBob
sumber