- Catégories :
REGEXP_COUNT¶
Renvoie le nombre de fois qu’un motif se produit dans une chaîne.
Voir aussi Fonctions de chaîne (expressions régulières).
Syntaxe¶
REGEXP_COUNT( <subject> , <pattern> [ , <position> , <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 :
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)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
Le caractère générique POSIX
.
correspond à\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 NUMBER. Renvoie NULL si l’un des arguments est NULL.
Notes sur l’utilisation¶
Reportez-vous aux Notes générales sur l’utilisation pour les fonctions d’expression régulière.
Détails du classement¶
Arguments with collation specifications are currently not supported.
Exemples¶
L’exemple suivant compte les occurrences du mot was
. La correspondance commence au premier caractère de la chaîne :
SELECT REGEXP_COUNT('It was the best of times, it was the worst of times',
'\\bwas\\b',
1) AS result;
+--------+
| RESULT |
|--------|
| 2 |
+--------+
L’exemple suivant illustre des occurrences qui se chevauchent : Créer une table et insérer des données :
CREATE OR REPLACE TABLE overlap (id NUMBER, a STRING);
INSERT INTO overlap VALUES (1,',abc,def,ghi,jkl,');
INSERT INTO overlap VALUES (2,',abc,,def,,ghi,,jkl,');
SELECT * FROM overlap;
+----+----------------------+
| ID | A |
|----+----------------------|
| 1 | ,abc,def,ghi,jkl, |
| 2 | ,abc,,def,,ghi,,jkl, |
+----+----------------------+
Exécutez une requête qui utilise REGEXP_COUNT pour compter le nombre de fois que le motif suivant est trouvé dans chaque ligne : un signe de ponctuation suivi de chiffres et de lettres, suivi d’un signe de ponctuation.
SELECT id,
REGEXP_COUNT(a,
'[[:punct:]][[:alnum:]]+[[:punct:]]',
1,
'i') AS result
FROM overlap;
+----+--------+
| ID | RESULT |
|----+--------|
| 1 | 2 |
| 2 | 4 |
+----+--------+