Найпростіший спосіб редагувати один запис у стовпці XML?


9

Як я розумію, студія управління MS SQL Server не дозволяє безпосередньо редагувати / замінювати записи в стовпцях XML через GUI (копіювання / вставка не працює і т.д.).

Який найпростіший варіант замінити один запис у стовпці XML? Чи потрібно використовувати щось інше, ніж UPDATE / REPLACE для значення стовпця XML?

Відповіді:


22

Якщо вам потрібно просто замінити весь фрагмент XML за один раз, то ви можете зробити звичайне оновлення, наприклад щось подібне:

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

Якщо вам потрібно відредагувати окремі атрибути чи елементи, ви можете використовувати метод .modify типу даних XML у SQL Server для оновлення окремих значень. Ось простий приклад для початку роботи:

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 та очікуваних результатів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.