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_ INSTR fonction
Recherche un modèle d’expression régulière dans une chaîne et renvoie un nombre entier qui indique la position de début de la sous-chaîne correspondante. Si aucune correspondance n’est trouvée, la fonction renvoie 0
. REGEXP_ INSTR est similaire à la POSITIONfonction, 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
Syntaxe
REGEXP_INSTR( source_string, pattern [, position [, occurrence] [, option [, parameters ] ] ] ] )
Arguments
- source_string
-
Expression de chaîne, 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.
- position
-
(Facultatif)
INTEGER
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 est1
. Si position est inférieur à1
, la recherche commence au premier caractère de source_string. Si position est supérieur au nombre de caractères de source_string, le résultat est0
. - occurrence
-
(Facultatif)
INTEGER
positif qui indique quelle occurrence du modèle utiliser. REGEXP_ INSTR ignore les premiersoccurrence-1
matchs. L’argument par défaut est1
. Si occurrence est inférieur à1
ou supérieur au nombre de caractères dans source_string, la recherche est ignorée et le résultat est0
. - option
-
(Facultatif) Valeur qui indique s’il faut renvoyer la position du premier caractère de la correspondance (
0
) ou celle du premier caractère après la fin de la correspondance (1
). Une valeur non nulle est identique à1
. La valeur par défaut est0
. - 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.
-
e : extraire une sous-chaîne à l’aide d’une sous-expression.
Si le modèle inclut une sous-expression, REGEXP _ INSTR correspond à une sous-chaîne utilisant la première sous-expression du modèle. REGEXP_ ne INSTR prend en compte que la première sous-expression ; les sous-expressions supplémentaires sont ignorées. Si le modèle ne possède pas de sous-expression, REGEXP _ INSTR ignore le paramètre « e ».
-
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
Entier
Exemples
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 rechercher le caractère @
qui commence un nom de domaine et renvoyer la position de début de la première correspondance, utilisez l’exemple suivant.
SELECT email, REGEXP_INSTR(email, '@[^.]*') FROM users ORDER BY userid LIMIT 4;
+-----------------------------------------------+--------------+ | email | regexp_instr | +-----------------------------------------------+--------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | 21 | | Suspendisse.tristique@nonnisiAenean.edu | 22 | | amet.faucibus.ut@condimentumegetvolutpat.ca | 17 | | sed@lacusUtnec.ca | 4 | +-----------------------------------------------+--------------+
Pour rechercher des variantes du mot Center
et renvoyer la position de début de la première correspondance, utilisez l’exemple suivant.
SELECT venuename, REGEXP_INSTR(venuename,'[cC]ent(er|re)$') FROM venue WHERE REGEXP_INSTR(venuename,'[cC]ent(er|re)$') > 0 ORDER BY venueid LIMIT 4;
+-----------------------+--------------+ | venuename | regexp_instr | +-----------------------+--------------+ | The Home Depot Center | 16 | | Izod Center | 6 | | Wachovia Center | 10 | | Air Canada Centre | 12 | +-----------------------+--------------+
Pour rechercher la position de début de la première occurrence de la chaîne FOX
, à l’aide d’une logique de correspondance respectant la casse, utilisez l’exemple suivant.
SELECT REGEXP_INSTR('the fox', 'FOX', 1, 1, 0, 'i');
+--------------+ | regexp_instr | +--------------+ | 5 | +--------------+
Pour utiliser un modèle écrit en PCRE dialecte afin de localiser des mots contenant au moins un chiffre et une lettre minuscule, utilisez l'exemple suivant. Il utilise l'?=
opérateur, qui a une connotation prospective spécifique dans. PCRE Cet exemple montre comment trouver la position de départ du deuxième mot de ce type.
SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'p');
+--------------+ | regexp_instr | +--------------+ | 21 | +--------------+
Pour utiliser un modèle écrit en PCRE dialecte afin de localiser des mots contenant au moins un chiffre et une lettre minuscule, utilisez l'exemple suivant. Il utilise l'?=
opérateur, qui a une connotation prospective spécifique dans. PCRE Cet exemple recherche la position de départ du deuxième mot de ce type, mais diffère de l’exemple précédent car il utilise une correspondance avec non-respect de la casse.
SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'ip');
+--------------+ | regexp_instr | +--------------+ | 15 | +--------------+