SQL REPLACE()

La fonction REPLACE dans le langage SQL permet de remplacer des caractères alphanumérique dans une chaîne de caractère. Cela sert particulièrement à mettre à jour des données dans une base de données ou à afficher des résultats personnalisés.

Syntaxe

Syntaxe basique

La fonction comporte 3 paramètres :

  1. Chaîne d’entré
  2. Texte à remplacer
  3. Texte qui sert de remplacement

La requête SQL ci-dessous présente un exemple concret d’utilisation de cette fonction SQL.

SELECT REPLACE('Hello tout le monde', 'Hello', 'Bonjour');

Résultat :

Bonjour tout le monde

Le résultat montre bien que le mot “Hello” a été remplacé dans la chaîne initiale.

Fonction REPLACE dans un UPDATE

Pour modifier certains caractères dans une base de données, il est possible d’utiliser une requête avec la syntaxe suivante:

UPDATE table
SET nom_colonne = REPLACE(nom_colonne, 'ancien texte', 'texte de remplacement')

Cette requête permet de remplacer le texte de la colonne “nom_colonne”. Cela peut se révéler très pratique pour corriger des erreurs d’une base de données.

Fonction REPLACE dans un SELECT

Pour ne remplacer les caractères que lors de l’affichage et ne pas altérer les données contenu dans la table, il est possible d’utiliser cette fonction dans un SELECT, comme le montre cet exemple:

SELECT colonne1, colonne2, REPLACE(colonne3, 'exemple insulte, 'CENSURE')
FROM table

Cela peut se révéler très pratique pour modifier des caractères mais garder une bonne intégrité des données.

Exemple

Il est possible d’imaginer une table qui possède une liste de sites web populaires.

Table site :

iddate_ajoutsiteurl
12013-02-05Wikipediahttp://fr.wikipedia.org/
22013-02-11Googlehttp://www.google.fr/
32013-03-16Facebookhttp://www.facebook.com/
42013-03-16Facebookhttp://www.facebook.com/home.php
52013-03-16Facebookhttp://www.facebook.com/feed/friends

Il est possible de remplacer certains caractères du tableau, par exemple pour remplacer le nom de domaine pour toutes les URLs de Facebook. Pour cela, il est possible d’utiliser la requête SQL suivante:

UPDATE site
SET url = REPLACE(url, 'www.facebook.com', 'fr-fr.facebook.com')
WHERE url LIKE '%www.facebook.com%'

Il y a 2 aspects particulier dans cette requête : la recherche avec LIKE permet de filtrer la mise à jour uniquement sur les URL qui contiennent le terme, puis la fonction REPLACE permet de remplacer l’ancienne URL par la nouvelle.

Contenu de la table après l’exécution de la requête :

iddate_ajoutsiteurl
12013-02-05Wikipediahttp://fr.wikipedia.org/
22013-02-11Googlehttp://www.google.fr/
32013-03-16Facebookhttp://fr-fr.facebook.com/
42013-03-16Facebookhttp://fr-fr.facebook.com/home.php
52013-03-16Facebookhttp://fr-fr.facebook.com/feed/friends

Compatibilité

Cette fonction est très commune et fonctionne à la fois avec MySQL, PostgreSQL, Oracle et SQL Server.

Attention à l’ordre des paramètres

Les développeurs web qui ont l’habitude du langage PHP doivent se méfier de l’ordre des paramètres étant donné que ce n’est pas le même que la fonction str_replace(). L’ordre des paramètres de la fonction PHP est comme présenté ci-dessous:

str_replace ( $texte_recherche , $texte_remplacement , $contenu_initial );
Partager