Il modo più semplice per modificare la singola voce nella colonna XML?


9

A quanto ho capito MS SQL Server Management Studio non consente di modificare / sostituire direttamente le voci nelle colonne XML tramite GUI (copia / incolla non funziona ecc.).

Qual è l'opzione più semplice per sostituire una singola voce in una colonna XML? Devo usare qualcosa di diverso da UPDATE / REPLACE per un valore di colonna XML?

Risposte:


22

Se hai solo bisogno di sostituire l'intero pezzo di XML in una volta, puoi fare un normale AGGIORNAMENTO, ad esempio qualcosa del genere:

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

Se è necessario modificare singoli attributi o elementi, è possibile utilizzare il metodo .modify del tipo di dati XML in SQL Server per aggiornare singoli valori. Ecco un semplice esempio per iniziare:

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

Se hai bisogno di ulteriore aiuto, pubblica un piccolo esempio del tuo XML e dei risultati previsti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.