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_ COUNT fonction
Recherche un modèle d’expression régulière dans une chaîne et renvoie un entier indiquant le nombre de fois où le modèle spécifié apparaît dans la chaîne. Si aucune correspondance n’est trouvée, la fonction renvoie 0
. Pour plus d'informations sur les expressions régulières, voir POSIXopérateurs et Expression régulière
Syntaxe
REGEXP_COUNT( source_string, pattern [, position [, parameters ] ] )
Arguments
- source_string
-
Chaîne
CHAR
ouVARCHAR
. - 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
. - 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
INTEGER
Exemples
Pour compter le nombre de fois qu’une séquence de trois lettres apparaît, utilisez l’exemple suivant.
SELECT REGEXP_COUNT('abcdefghijklmnopqrstuvwxyz', '[a-z]{3}');
+--------------+ | regexp_count | +--------------+ | 8 | +--------------+
Pour compter les occurrences de la chaîne FOX
en utilisant une correspondance respectant la casse, utilisez l’exemple suivant.
SELECT REGEXP_COUNT('the fox', 'FOX', 1, 'i');
+--------------+ | regexp_count | +--------------+ | 1 | +--------------+
Pour utiliser un modèle écrit dans le PCRE dialecte afin de localiser des mots contenant au moins un chiffre et une lettre minuscule, utilisez l'exemple suivant. L'exemple utilise l'?=
opérateur, qui a une connotation prospective spécifique dans. PCRE Cet exemple compte le nombre d’occurrences de ces mots, avec une correspondance avec respect de la casse.
SELECT REGEXP_COUNT('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 'p');
+--------------+ | regexp_count | +--------------+ | 2 | +--------------+
Pour utiliser un modèle écrit dans le 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 spécifique dansPCRE. Cet exemple compte le nombre d’occurrences de ces mots, mais diffère de l’exemple précédent car il utilise une correspondance avec non-respect de la casse.
SELECT REGEXP_COUNT('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 'ip');
+--------------+ | regexp_count | +--------------+ | 3 | +--------------+
L'exemple suivant utilise les données de la USERS table de l'TICKITexemple de base de données. Pour de plus amples informations, veuillez consulter Exemple de base de données.
Pour compter le nombre de fois que le nom de domaine de niveau supérieur est org
ou edu
, utilisez l’exemple suivant.
SELECT email, REGEXP_COUNT(email,'@[^.]*\.(org|edu)') FROM users ORDER BY userid LIMIT 4;
+-----------------------------------------------+--------------+ | email | regexp_count | +-----------------------------------------------+--------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | 1 | | Suspendisse.tristique@nonnisiAenean.edu | 1 | | amet.faucibus.ut@condimentumegetvolutpat.ca | 0 | | sed@lacusUtnec.ca | 0 | +-----------------------------------------------+--------------+