MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment REPLACE() fonctionne dans MariaDB

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)

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