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 :
- Chaîne d’entré
- Texte à remplacer
- 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 :
id | date_ajout | site | url |
---|---|---|---|
1 | 2013-02-05 | Wikipedia | http://fr.wikipedia.org/ |
2 | 2013-02-11 | http://www.google.fr/ | |
3 | 2013-03-16 | http://www.facebook.com/ | |
4 | 2013-03-16 | http://www.facebook.com/home.php | |
5 | 2013-03-16 | http://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 :
id | date_ajout | site | url |
---|---|---|---|
1 | 2013-02-05 | Wikipedia | http://fr.wikipedia.org/ |
2 | 2013-02-11 | http://www.google.fr/ | |
3 | 2013-03-16 | http://fr-fr.facebook.com/ | |
4 | 2013-03-16 | http://fr-fr.facebook.com/home.php | |
5 | 2013-03-16 | http://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 );