2012-03-27 22 views
7

Desidero eseguire un aggiornamento su tutte le righe in una colonna XML in SQL Server 2008, sostituendo solo una sottostringa in un determinato nodo xml. Sono nuovo di XML DML/XQuery e tutto questo e non riesco proprio a capire come farlo.Sottostringa di aggiornamento nella colonna XML SQL Server 2008

Esempio di XML nella colonna voglio aggiornare:

<d> 
    <p n="Richedit01" t="System.String"> 
    <v> 
     &lt;p&gt; &lt;img border="0" alt="Football4" src="/$-1/football4.jpg" /&gt; &lt;/p&gt; 
    </v> 
    </p> 
</d> 

voglio sostituire tutte le occorrenze della stringa 'src = "/ $ - 1 /' con 'src ="/$ - 1/file/'in tutte le righe.

provato questo, ma a quanto pare non c'è modo che posso usare XPath funzione di sostituire in questo modo:

UPDATE Translation 
SET ContentData.modify('replace value of (d/p[@t=''System.String'']/v)[1] with (d/p[@t=''System.String'']/v[replace(.,''src="/$-1/'',''src="/$-1/file/'')]) ') 

risposta

5

Penso che la soluzione più semplice è quella di convertire in un altro tipo di dati in grado di accettare sostituire (nvarchar (MAX) per esempio). Utilizzare la funzione REPLACE, e poi riconvertirlo in XML

Qualcosa di simile

UPDATE Translation SET 
ContentData = CAST(REPLACE(CAST(ContentData AS NVARCHAR(MAX)), '/$-1/','/$-1/file/') AS XML) 
+0

ringrazio molto James! È un po 'più "rischioso" non sapere in quale nodo si verifica la sostituzione, ma funziona bene per me. Grazie! – Kberg

Problemi correlati