68 votes

Recherche et remplacement d'une partie de chaîne dans une base de données

Je dois remplacer toutes les balises iframe, stockées sous forme de 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%'

Disons 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

99voto

Mufaka Points 1562

Vous pouvez le faire avec une instruction UPDATE en fixant la valeur avec un REPLACE

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

Vous devez être extrêmement prudent lors de cette opération ! Je vous recommande vivement de faire d'abord une sauvegarde.

86voto

kristof Points 18322

Je pense que 2 appels de mise à jour devraient suffire

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

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

13voto

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

et vous le faites en un seul passage.

4voto

Westley Points 547

Je viens d'être confronté à un problème similaire. J'ai exporté le contenu de la base de données dans un fichier sql et utilisé TextEdit pour trouver et remplacer tout ce dont j'avais besoin. La simplicité avant tout !

0voto

Manu Points 10901

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X