- Kategorien:
REGEXP_COUNT¶
Gibt die Anzahl des Vorkommens eines Musters in einer Zeichenfolge zurück.
Siehe auch Zeichenfolgenfunktionen (reguläre Ausdrücke).
Syntax¶
REGEXP_COUNT( <subject> , <pattern> [ , <position> , <parameters> ] )
Argumente¶
Benötigt:
subject
Die Zeichenfolge, nach der gesucht werden soll.
pattern
Abzugleichendes Muster.
Richtlinien zur Angabe von Mustern finden Sie unter Zeichenfolgenfunktionen (reguläre Ausdrücke).
Optional:
position
Anzahl der Zeichen ab dem Anfang der Zeichenfolge, an dem die Funktion mit der Suche nach Übereinstimmungen beginnt.
Standard:
1
(die Suche nach einer Übereinstimmung beginnt beim ersten Zeichen links)parameters
Zeichenfolge aus einem oder mehreren Zeichen, in der die Parameter angegeben sind, die zur Suche nach Übereinstimmungen verwendet werden. Unterstützte Werte:
Parameter
Beschreibung
c
Abgleich, bei dem zwischen Groß- und Kleinschreibung unterschieden wird
i
Abgleich ohne Berücksichtigung der Groß-/Kleinschreibung
m
Mehrzeiliger Modus.
e
Untergeordnete Übereinstimmungen extrahieren
s
POSIX-Platzhalterzeichen
.
entspricht\n
Standard:
c
Weitere Details dazu finden Sie unter Angeben der Parameter für reguläre Ausdrücke.
Rückgabewerte¶
Gibt einen Wert vom Typ NUMBER zurück. Gibt NULL zurück, wenn ein Argument NULL ist.
Nutzungshinweise¶
Siehe Allgemeine Nutzungshinweise für Funktionen für reguläre Ausdrücke.
Sortierungsdetails¶
Arguments with collation specifications are currently not supported.
Beispiele¶
Im folgenden Beispiel wird das Vorkommen des Worts was
gezählt. Die Übereinstimmung beginnt mit dem ersten Zeichen in der Zeichenfolge:
SELECT REGEXP_COUNT('It was the best of times, it was the worst of times',
'\\bwas\\b',
1) AS result;
+--------+
| RESULT |
|--------|
| 2 |
+--------+
Im folgenden Beispiel werden sich überlappende Vorkommen veranschaulicht: Erstellen Sie eine Tabelle, und fügen Sie Daten ein:
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, |
+----+----------------------+
Führen Sie eine Abfrage aus, die REGEXP_COUNT verwendet, um zu zählen, wie oft das folgende Muster in jeder Zeile vorkommt: ein Satzzeichen gefolgt von Ziffern und Buchstaben, gefolgt von einem Satzzeichen.
SELECT id,
REGEXP_COUNT(a,
'[[:punct:]][[:alnum:]]+[[:punct:]]',
1,
'i') AS result
FROM overlap;
+----+--------+
| ID | RESULT |
|----+--------|
| 1 | 2 |
| 2 | 4 |
+----+--------+