2009-03-03 24 views
62

Ho bisogno di sostituire tutti i tag iframe, memorizzati come nvarchar nel mio database. Posso trovare le voci utilizzando il seguente sql-domanda:Cerca e sostituisci parte della stringa nella banca dati

SELECT * FROM databasename..VersionedFields WHERE Value LIKE '%<iframe%' 

dire che voglio sostituire il segmento di codice seguente:

code before iframe <iframe src="yadayada"> </iframe> code after iframe 

Con questo:

code before iframe <a>iframe src="yadayada"</a> code after iframe 

risposta

82

Penso 2 chiamate aggiornamento dovrebbe fare

update VersionedFields 
set Value = replace(value,'<iframe','<a><iframe') 

update VersionedFields 
set Value = replace(value,'> </iframe>','</a>') 
+0

Solo una nota, lì sembra essere un carattere di sintassi mancante. Dovrebbe essere: 'set Valore = sostituisci (valore, '

+0

grazie @JRadtheBad - aggiornato ora – kristof

0

vorrei prendere in considerazione la scrittura una funzione di sostituzione CLR con supporto RegEx per questo tipo di manipolazione di stringhe.

95

si può fare con un'istruzione UPDATE impostando il valore con un SOSTITUIAMO

UPDATE 
    Table 
SET 
    Column = Replace(Column, 'find value', 'replacement value') 
WHERE 
    xxx 

Si vuole essere estremamente attenti quando si fa questo! Consiglio vivamente di fare un backup prima.

+0

[qui] (http://www.mydigitallife.info/how-to-find-and-replace- text-in-mysql-database-using-sql /) ci sono più informazioni su di esso –

+0

Per i tipi di dati 'text' o 'ntext' vedi: http://stackoverflow.com/a/4341677/2049986 –

13
update VersionedFields 
set Value = replace(replace(value,'<iframe','<a>iframe'), '> </iframe>','</a>') 

e si fanno in un unico passaggio.

4

Mi sono trovato di fronte a un problema simile. Ho esportato il contenuto del db in un file sql e ho usato TextEdit per trovare e sostituire tutto ciò di cui avevo bisogno. Semplicità ftw!

+0

Sei l'uomo più intelligente qui Farò questo: D – ucefkh

-1

banca dati Update e Set fieldName = Replace (fieldName, 'FindString', 'ReplaceString')