Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
REGEXP_ REPLACE fonction
Recherche un modèle d’expression régulière dans une chaîne et remplace chaque occurrence du modèle par la chaîne spécifiée. REGEXP_ REPLACE est similaire àREPLACEfonction, mais vous permet de rechercher un modèle d'expression régulière dans une chaîne. Pour plus d'informations sur les expressions régulières, voir POSIXopérateurs et Expression régulière
REGEXP_ REPLACE est similaire à TRANSLATEfonction et leREPLACEfonction, sauf qu'il TRANSLATE effectue plusieurs substitutions de caractères uniques et remplace une chaîne entière REPLACE par une autre chaîne, tandis que REGEXP _ vous REPLACE permet de rechercher dans une chaîne un modèle d'expression régulière.
Syntaxe
REGEXP_REPLACE( source_string, pattern [, replace_string [ , position [, parameters ] ] ] )
Arguments
- source_string
-
Expression de chaîne
CHAR
ouVARCHAR
, comme un nom de colonne, à rechercher. - pattern
-
Un littéral de chaîne UTF -8 qui représente un modèle d'expression régulière. Pour de plus amples informations, veuillez consulter POSIXopérateurs.
- replace_string
-
(Facultatif) Expression de chaîne
CHAR
ouVARCHAR
, comme un nom de colonne, qui va remplacer chaque occurrence de modèle. La valeur par défaut est une chaîne vide ( "" ). - position
-
(Facultatif) Entier positif qui indique la position dans source_string où commencer la recherche. La position est basée sur le nombre de caractères, pas d’octets, de sorte que les caractères à plusieurs octets soient comptés comme des caractères seuls. L’argument par défaut est
1
. Si position est inférieur à1
, la recherche commence au premier caractère de source_string. Si position est supérieure au nombre de caractères de source_string, le résultat est source_string. - parameters
-
(Facultatif) Un ou plusieurs littéraux de chaîne qui indiquent comment la fonction correspond au modèle. Les valeurs possibles sont les suivantes :
-
c : réaliser une correspondance avec respect de la casse. Par défaut, la correspondance avec respect de la casse est utilisée.
-
i : réaliser une correspondance avec non-respect de la casse.
-
p — Interprétez le modèle avec le dialecte Perl Compatible Regular Expression (PCRE). Pour plus d'informationsPCRE, voir Expressions régulières compatibles avec Perl
sur Wikipedia.
-
Type de retour
VARCHAR
Si pattern ou replace_string a la valeur NULL
, la fonction renvoie NULL
.
Exemples
Pour remplacer toutes les occurrences de la chaîne FOX
dans la valeur quick brown fox
, à l’aide d’une correspondance respectant la casse, utilisez l’exemple suivant.
SELECT REGEXP_REPLACE('the fox', 'FOX', 'quick brown fox', 1, 'i');
+---------------------+ | regexp_replace | +---------------------+ | the quick brown fox | +---------------------+
L'exemple suivant utilise un modèle écrit dans le PCRE dialecte pour localiser les mots contenant au moins un chiffre et une lettre minuscule. Il utilise l'?=
opérateur, qui a une connotation prospective spécifique dans. PCRE Pour remplacer chaque occurrence d’un tel mot par la valeur [hidden]
, utilisez l’exemple suivant.
SELECT REGEXP_REPLACE('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', '[hidden]', 1, 'p');
+-------------------------------+ | regexp_replace | +-------------------------------+ | [hidden] plain A1234 [hidden] | +-------------------------------+
L'exemple suivant utilise un modèle écrit dans le PCRE dialecte pour localiser les mots contenant au moins un chiffre et une lettre minuscule. Il utilise l'?=
opérateur, qui a une connotation prospective spécifique dans. PCRE Pour remplacer chaque occurrence d’un tel mot par la valeur [hidden]
(diffère de l’exemple précédent car une correspondance ne respectant pas la casse est utilisée), utilisez l’exemple suivant.
SELECT REGEXP_REPLACE('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', '[hidden]', 1, 'ip');
+----------------------------------+ | regexp_replace | +----------------------------------+ | [hidden] plain [hidden] [hidden] | +----------------------------------+
Les exemples suivants utilisent les données de la USERS table de la base de données TICKIT d'exemple. Pour de plus amples informations, veuillez consulter Exemple de base de données.
Pour supprimer le caractère @
et le nom de domaine des adresses e-mail, utilisez l’exemple suivant.
SELECT email, REGEXP_REPLACE(email, '@.*\\.(org|gov|com|edu|ca)$') FROM users ORDER BY userid LIMIT 4;
+-----------------------------------------------+-----------------------+ | email | regexp_replace | +-----------------------------------------------+-----------------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero | | Suspendisse.tristique@nonnisiAenean.edu | Suspendisse.tristique | | amet.faucibus.ut@condimentumegetvolutpat.ca | amet.faucibus.ut | | sed@lacusUtnec.ca | sed | +-----------------------------------------------+-----------------------+
Pour remplacer les noms de domaine des adresses e-mail par internal.company.com
, utilisez l’exemple suivant.
SELECT email, REGEXP_REPLACE(email, '@.*\\.[[:alpha:]]{2,3}','@internal.company.com') FROM users ORDER BY userid LIMIT 4;
+-----------------------------------------------+--------------------------------------------+ | email | regexp_replace | +-----------------------------------------------+--------------------------------------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero@internal.company.com | | Suspendisse.tristique@nonnisiAenean.edu | Suspendisse.tristique@internal.company.com | | amet.faucibus.ut@condimentumegetvolutpat.ca | amet.faucibus.ut@internal.company.com | | sed@lacusUtnec.ca | sed@internal.company.com | +-----------------------------------------------+--------------------------------------------+