CatĂ©gories :

Fonctions de chaßne (expressions réguliÚres)

REGEXP_REPLACE¶

Renvoie le sujet avec le modÚle spécifié (ou toutes les occurrences du modÚle) soit supprimé soit remplacé par une chaßne de remplacement.

Voir aussi Fonctions de chaßne (expressions réguliÚres).

Syntaxe¶

REGEXP_REPLACE( <subject> , <pattern> [ , <replacement> , <position> , <occurrence> , <parameters> ] )
Copy

Arguments¶

Obligatoire :

subject

La chaĂźne Ă  rechercher pour les correspondances.

pattern

ModĂšle devant correspondre.

Pour des directives sur la spécification des modÚles, voir Fonctions de chaßne (expressions réguliÚres).

Facultatif :

replacement

Chaßne qui remplace les sous-chaßnes correspondant au motif. Si une chaßne vide est spécifiée, la fonction supprime tous les motifs correspondants et renvoie la chaßne résultante.

Valeur par dĂ©faut : '' (chaĂźne vide).

position

Nombre de caractÚres depuis le début de la chaßne pour lesquels la fonction commence à rechercher des correspondances.

Par dĂ©faut : 1 (la recherche d’une correspondance commence au premier caractĂšre Ă  gauche)

occurrence

SpĂ©cifie l’occurrence du modĂšle devant correspondre. Si 0 est spĂ©cifiĂ©, toutes les occurrences sont remplacĂ©es.

Par dĂ©faut : 0 (toutes les occurrences)

parameters

ChaĂźne d’un ou plusieurs caractĂšres spĂ©cifiant les paramĂštres utilisĂ©s pour la recherche de correspondances. Valeurs prises en charge :

ParamĂštre

Description

c

Correspondance sensible Ă  la casse

i

Correspondance non sensible Ă  la casse

m

Mode multiligne

e

Extraire les sous-correspondances.

s

POSIX wildcard character . matches \n

Par dĂ©faut : c

Pour plus de dĂ©tails, voir SpĂ©cification des paramĂštres de l’expression rĂ©guliĂšre.

Renvoie¶

Renvoie une valeur de type VARCHAR.

Si aucune correspondance n’est trouvĂ©e, le sujet d’origine est renvoyĂ©.

Renvoie NULL si l’un des arguments est NULL.

Notes sur l’utilisation¶

  • La chaĂźne de remplacement peut contenir des rĂ©fĂ©rences arriĂšre pour capturer des groupes (c’est-Ă -dire des sous-expressions du modĂšle). Un groupe de capture est une expression rĂ©guliĂšre placĂ©e entre parenthĂšses (( )). Le nombre maximal de groupes de capture est 9.

    Les rĂ©fĂ©rences arriĂšres cherchent les expressions correspondantes Ă  l’intĂ©rieur d’un groupe de capture. Les rĂ©fĂ©rences arriĂšre ont la forme n oĂč n est une valeur comprise entre 0 et 9 inclus, qui fait rĂ©fĂ©rence Ă  l’instance correspondante du groupe de capture. Pour plus d’informations, voir Exemples (dans cette rubrique).

  • Les parenthĂšses (( )) et les crochets ([ ]) doivent actuellement ĂȘtre doublĂ©s pour ĂȘtre analysĂ©s sous forme de chaĂźnes de littĂ©raux.

    L’exemple ci-dessous montre comment supprimer les parenthĂšses :

    SELECT REGEXP_REPLACE('Customers - (NY)','\\(|\\)','') AS customers;
    
    Copy
    +----------------+
    | CUSTOMERS      |
    |----------------|
    | Customers - NY |
    +----------------+
    
  • Pour des notes d’utilisation supplĂ©mentaires, voir Notes gĂ©nĂ©rales sur l’utilisation pour les fonctions d’expression rĂ©guliĂšre.

Détails du classement¶

Arguments with collation specifications currently aren’t supported.

Exemples¶

L’exemple suivant remplace tous les espaces de la chaĂźne par rien (c’est-Ă -dire que tous les espaces sont supprimĂ©s) :

SELECT REGEXP_REPLACE('It was the best of times, it was the worst of times',
                      '( ){1,}',
                      '') AS result;
Copy
+------------------------------------------+
| RESULT                                   |
|------------------------------------------|
| Itwasthebestoftimes,itwastheworstoftimes |
+------------------------------------------+

L’exemple suivant correspond Ă  la chaĂźne times et la remplace par la chaĂźne days. La correspondance commence au premier caractĂšre de la chaĂźne et remplace la deuxiĂšme occurrence de la sous-chaĂźne :

SELECT REGEXP_REPLACE('It was the best of times, it was the worst of times',
                      'times',
                      'days',
                      1,
                      2) AS result;
Copy
+----------------------------------------------------+
| RESULT                                             |
|----------------------------------------------------|
| It was the best of times, it was the worst of days |
+----------------------------------------------------+

L’exemple suivant utilise des rĂ©fĂ©rences arriĂšres pour rĂ©organiser la chaĂźne firstname middlename lastname en tant que lastname, firstname middlename et insĂ©rer une virgule entre lastname et firstname :

SELECT REGEXP_REPLACE('firstname middlename lastname',
                      '(.*) (.*) (.*)',
                      '\\3, \\1 \\2') AS name_sort;
Copy
+--------------------------------+
| NAME_SORT                      |
|--------------------------------|
| lastname, firstname middlename |
+--------------------------------+