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

2 façons de remplacer une sous-chaîne dans MariaDB

Si vous devez remplacer une sous-chaîne par une autre chaîne dans MariaDB, voici deux approches que vous pouvez utiliser.

Le REPLACE() Fonction

Dans MariaDB, le REPLACE() La fonction est conçue spécifiquement pour remplacer une sous-chaîne dans une autre chaîne.

Vous fournissez trois arguments lors de l'appel de la fonction. Il s'agit de la chaîne, de la sous-chaîne et de la chaîne de remplacement.

Exemple :

SELECT REPLACE('My dog likes to dig holes', 'dog', 'cat');

Résultat :

+----------------------------------------------------+
| REPLACE('My dog likes to dig holes', 'dog', 'cat') |
+----------------------------------------------------+
| My cat likes to dig holes                          |
+----------------------------------------------------+

Dans ce cas, nous avons remplacé la sous-chaîne dog avec cat .

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                          |
+----------------------------------------------------+

Le REPLACE() La fonction effectue une correspondance sensible à la casse.

Voir comment REPLACE() Fonctionne dans MariaDB pour plus d'exemples.

Le REGEXP_REPLACE() Fonction

Le REGEXP_REPLACE() la fonction est similaire à la REPLACE() fonction, sauf qu'elle vous permet de faire une correspondance de modèle à l'aide d'expressions régulières.

Cela rend REGEXP_REPLACE() plus puissant que REPLACE() , car vous pouvez faire correspondre des parties d'une chaîne pour remplacer des sous-chaînes qui seraient plus difficiles ou impossibles à faire correspondre en utilisant simplement REPLACE() .

Exemple :

SELECT REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog');

Résultat :

+-------------------------------------------------+
| REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog') |
+-------------------------------------------------+
| My dog has dogs                                 |
+-------------------------------------------------+

Les expressions régulières peuvent être très puissantes, et cet exemple utilise un exemple très simple. Pour utiliser REGEXP_REPLACE() efficacement, vous aurez besoin de connaître le modèle correct à utiliser pour le résultat souhaité.

Il est également possible de fournir la chaîne littérale complète comme modèle, comme vous le feriez avec le REPLACE() fonction.

Par conséquent, nous pourrions réécrire le premier exemple sur cette page pour utiliser REGEXP_REPLACE() au lieu de REPLACE() .

Voici un exemple qui les exécute côte à côte pour illustrer ce que je veux dire :

SELECT 
    REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REPLACE()",
    REGEXP_REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REGEXP_REPLACE()";

Résultat :

+---------------------------+---------------------------+
| REPLACE()                 | REGEXP_REPLACE()          |
+---------------------------+---------------------------+
| My cat likes to dig holes | My cat likes to dig holes |
+---------------------------+---------------------------+

En outre, le REGEXP_REPLACE() suit les règles de sensibilité à la casse du classement effectif. La correspondance est effectuée de manière insensible à la casse pour les classements insensibles à la casse, et sensible à la casse pour les classements sensibles à la casse et pour les données binaires. Cependant, la sensibilité à la casse du classement peut être remplacée à l'aide de (?i ) et (?-i ) Indicateurs PCRE.

Voir comment REGEXP_REPLACE() Fonctionne dans MariaDB pour des exemples de sensibilité à la casse et plus encore.