2009-03-03 10 views
62

Je dois remplacer toutes les balises iframe, stockées sous nvarchar dans ma base de données. Je peux trouver les entrées à l'aide du sql-question suivante:Rechercher et remplacer une partie de la chaîne dans la base de données

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

que je veux remplacer le segment de code suivant:

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

Avec ceci:

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

Répondre

82

Je pense que 2 appels de mise à jour devraient faire

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

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

Juste une note, là semble être un caractère de syntaxe manquant. Devrait être: 'set Valeur = remplacer (valeur, '

+0

merci @JRadtheBad - mis à jour maintenant – kristof

0

Je considérerais l'écriture une fonction de remplacement CLR avec prise en charge de RegEx pour ce type de manipulation de chaîne.

95

Vous pouvez le faire avec une instruction UPDATE définissant la valeur avec un REMPLACER

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

Vous voulez être extrêmement prudent quand vous le faites! Je recommande fortement de faire une sauvegarde d'abord.

+0

[ici] (http://www.mydigitallife.info/how-to-find-and-replace- text-in-mysql-database-using-sql /) il y a plus d'info à ce sujet –

+0

Pour les types de données 'text' ou 'ntext' voir: http://stackoverflow.com/a/4341677/2049986 –

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

et vous le faites en une seule passe.

4

J'étais juste confronté à un problème similaire. J'ai exporté le contenu de la base de données dans un fichier sql et j'ai utilisé TextEdit pour trouver et remplacer tout ce dont j'avais besoin. Simplicité ftw!

+0

Vous êtes l'homme le plus intelligent ici, je vais le faire: D – ucefkh

-1

base de données de mise à jour et Set fieldName = Remplacer (fieldName, 'FindString', 'ReplaceString')

Questions connexes