Le MySQL REPLACE()
La fonction vous permet de remplacer toutes les occurrences d'une sous-chaîne par une autre chaîne. Il vous permet de faire des choses comme remplacer toutes les occurrences d'un mot par un autre mot, etc.
Cet article illustre son utilisation.
Syntaxe
Voici comment fonctionne la syntaxe :
REPLACE(str,from_str,to_str)
Où str
est la chaîne qui contient la ou les sous-chaînes. from_str
est la sous-chaîne que vous souhaitez remplacer par une autre chaîne. Et to_str
est la nouvelle chaîne qui remplacera l'ancienne chaîne.
Exemple
Voici un exemple de base :
SELECT REPLACE('Cats and dogs and cats and rabbits', 'and', 'or') AS Result;
Résultat :
+---------------------------------+ | Result | +---------------------------------+ | Cats or dogs or cats or rabbits | +---------------------------------+
Dans ce cas, nous échangeons simplement le mot and
avec le mot or
. Comme il y avait trois occurrences de ce mot, les trois ont été remplacées.
Sensible à la casse
Il est important de se rappeler que le REPLACE()
la fonction est sensible à la casse.
Exemple :
SELECT REPLACE('Cats and dogs and cats and rabbits', 'cat', 'flea') AS Result;
Résultat :
+-------------------------------------+ | Result | +-------------------------------------+ | Cats and dogs and fleas and rabbits | +-------------------------------------+
Dans ce cas, une seule instance de cat
a été remplacé, car une seule instance avait la bonne casse. La première instance avait un C
majuscule donc ça ne correspondait pas.
Supprimer une sous-chaîne
Vous pouvez également supprimer complètement une sous-chaîne, simplement en remplaçant la sous-chaîne par la chaîne vide (''
):
SELECT REPLACE('http://www.database.guide', 'www.', '') AS Result;
Résultat :
+-----------------------+ | Result | +-----------------------+ | http://database.guide | +-----------------------+
Une sauvegarde
Une autre méthode (peut-être plus sûre) consiste à inclure une partie du texte environnant, puis à supprimer la partie inutile :
SELECT REPLACE('http://www.database.guide', 'http://www.', 'http://') AS Result;
Résultat :
+-----------------------+ | Result | +-----------------------+ | http://database.guide | +-----------------------+
Cela évite de supprimer par inadvertance une sous-chaîne qui ne devrait pas être supprimée. Par exemple, si nous avons une URL telle que http://bestwww.com
, qui se transformerait par inadvertance en http://bestcom
sans la sauvegarde.
La même protection peut être appliquée dans les cas où vous remplacez du texte (pas seulement le supprimez). Par exemple, ceci :
SELECT REPLACE('Land of cats and dogs and sand', ' and ', ' or ') AS Result;
Résultat :
+------------------------------+ | Result | +------------------------------+ | Land of cats or dogs or sand | +------------------------------+
Dans ce cas, j'ai ajouté un espace avant et après la sous-chaîne et son texte de remplacement.
Si je n'avais pas fait ça, je me serais retrouvé avec ça :
SELECT REPLACE('Land of cats and dogs and sand', 'and', 'or') AS Result;
Résultat :
+----------------------------+ | Result | +----------------------------+ | Lor of cats or dogs or sor | +----------------------------+