web-dev-qa-db-fra.com

Rechercher et remplacer une partie de la chaîne dans la base de données

Je dois remplacer tous les tags iframe, stockés sous nvarchar dans ma base de données. Je peux trouver les entrées en utilisant la question SQL suivante:

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

Dites que je veux remplacer le segment de code suivant:

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

Avec ça:

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

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>')
85
kristof

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

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

Vous voudrez être extrêmement prudent en faisant cela! Je recommande fortement de faire une sauvegarde en premier.

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

et vous le faites en un seul passage.

13
SFA

Je venais juste de faire face à un problème similaire. J'ai exporté le contenu de la base de données dans un fichier SQL et utilisé TextEdit pour rechercher et remplacer tout ce dont j'avais besoin. Simplicité ftw!

4
Westley

J'envisagerais d'écrire une fonction de remplacement CLR avec le support RegEx pour ce type de manipulation de chaîne.

0
Manu