- Catégories :
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> ] )
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;
+----------------+ | 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;
+------------------------------------------+
| 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;
+----------------------------------------------------+
| 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;
+--------------------------------+
| NAME_SORT |
|--------------------------------|
| lastname, firstname middlename |
+--------------------------------+