Dans MariaDB, REPLACE()
est une fonction de chaîne intégrée qui vous permet de remplacer une partie d'une chaîne par une autre chaîne.
La fonction accepte trois arguments :la chaîne, la sous-chaîne à remplacer et la chaîne par laquelle remplacer la sous-chaîne.
Syntaxe
La syntaxe ressemble à ceci :
REPLACE(str,from_str,to_str)
Où str
est la chaîne, et from_str
est la sous-chaîne à remplacer, et to_str
est la chaîne par laquelle remplacer cette sous-chaîne.
Exemple
Voici un exemple de base :
SELECT REPLACE('Black dog', 'dog', 'cat');
Résultat :
+------------------------------------+ | REPLACE('Black dog', 'dog', 'cat') | +------------------------------------+ | Black cat | +------------------------------------+
Dans ce cas, nous avons remplacé la sous-chaîne dog
avec cat
.
Plusieurs correspondances
Si la chaîne à remplacer apparaît plusieurs fois dans la chaîne, toutes les occurrences sont remplacées :
SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat');
Résultat :
+----------------------------------------------------+ | REPLACE('Black dogs and white dogs', 'dog', 'cat') | +----------------------------------------------------+ | Black cats and white cats | +----------------------------------------------------+
Aucune correspondance
Si la sous-chaîne n'apparaît pas dans la chaîne, REPLACE()
renvoie la chaîne inchangée :
SELECT REPLACE('Black dog', 'horse', 'cat');
Résultat :
+--------------------------------------+ | REPLACE('Black dog', 'horse', 'cat') | +--------------------------------------+ | Black dog | +--------------------------------------+
Sensibilité à la casse
Le REPLACE()
la fonction effectue une correspondance sensible à la casse :
SELECT REPLACE('Black dog', 'Dog', 'Cat');
Résultat :
+------------------------------------+ | REPLACE('Black dog', 'Dog', 'Cat') | +------------------------------------+ | Black dog | +------------------------------------+
Dans cet exemple, la casse ne correspondait pas, et donc rien n'a été remplacé.
Chaînes vides
Voici ce qui se passe lorsqu'une chaîne vide est passée pour chaque argument donné :
SELECT
REPLACE('', 'dog', 'cat') AS "1",
REPLACE('Black dog', '', 'cat') AS "2",
REPLACE('Black dog', 'dog', '') AS "3";
Résultat :
+------+-----------+--------+ | 1 | 2 | 3 | +------+-----------+--------+ | | Black dog | Black | +------+-----------+--------+
Donc dans ce cas :
- Passer une chaîne vide pour la chaîne initiale renvoie une chaîne vide.
- Passer une chaîne vide pour le deuxième argument renvoie la chaîne d'origine.
- Passer une chaîne vide pour le troisième argument supprime la chaîne à remplacer de la chaîne.
Caractère espace
Une chaîne vide n'est pas la même chose que le caractère espace.
Voici ce qui se passe lorsque nous changeons la chaîne vide en espace :
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3";
Résultat :
+------+-------------+---------+ | 1 | 2 | 3 | +------+-------------+---------+ | | Blackcatdog | Black | +------+-------------+---------+
Par conséquent, si la chaîne n'est rien d'autre qu'un espace, nous pouvons la remplacer par une autre chaîne :
SELECT REPLACE(' ', ' ', 'cat');
Résultat :
+--------------------------+ | REPLACE(' ', ' ', 'cat') | +--------------------------+ | cat | +--------------------------+
Arguments nuls
Fournir null
donne null
:
SELECT
REPLACE(null, 'dog', 'cat') AS "1",
REPLACE('Black dog', null, 'cat') AS "2",
REPLACE('Black dog', 'dog', null) AS "3";
Résultat :
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Argument manquant
Appel de REPLACE()
avec le mauvais nombre d'arguments, ou sans passage d'arguments, une erreur se produit :
SELECT REPLACE();
Résultat :
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1