Comment remplacer une partie de texte en SQL ?

Besoin de trouver les occurences d'un texte dans une colonne et de les remplacer dans toute la table ? Voici la solution !

Article publié le 23/05/2022, dernière mise à jour le 19/09/2023

Vous avez une base de données SQL existante et vous souhaitez rechercher et remplacer toutes les occurrences d'un texte dans la colonne d'une table ?

Il vous suffit d'utiliser la méthode REPLACE disponible sur tous les systèmes de gestion de base de données SQL en indiquant la colonne souhaitée, l'ancienne valeur puis la nouvelle.

Voici un exemple de requête facile à mettre en place :

UPDATE `table`
SET `column` = REPLACE(`column`, 'old_value', 'new_value')
WHERE `column` LIKE '%old_value%';

Les % dans la clause LIKE sont l'équivalent du ".*" dans une expression régulière !

À noter qu'ici la condition WHERE est presque redondante, car REPLACE ne modifiera pas le champ si la chaine recherchée n'est pas déjà présente.

Néanmoins cela permet de ne sélectionner qu'un sous-ensemble des lignes de la table, et donc d’accélérer le traitement. La différence est insignifiante sur une petite table, mais lorsque l'on commence à traiter des dizaines de milliers de lignes, cela devient indispensable !

Exception : Les champs sérialisés

Si vous stockez des champs sérialisés comme des tableaux en PHP, attention à ne pas les inclure dans votre requête de remplacement, car sinon vous risque de corrompre vos données.

En effet, la chaîne transformée n'aurait plus la même taille avant et après, la dé-sérialisation serait alors impossible.


Chase Clark sur Unsplash

Vous avez terminé l'article ?

Commentaires (0)

pour laisser un commentaire

Aucun commentaire pour l'instant