Kategorien:

Zeichenfolgenfunktionen (reguläre Ausdrücke)

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> ] )
Copy

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;
Copy
+--------+
| 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;
Copy
+----+----------------------+
| 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;
Copy
+----+--------+
| ID | RESULT |
|----+--------|
|  1 |      2 |
|  2 |      4 |
+----+--------+