REGEXP_COUNT Skalarfunktion

Die Skalarfunktion REGEXP_COUNT gibt die Häufigkeit zurück, mit der ein Muster für einen regulären Ausdruck in einer Zeichenfolge abgeglichen wird.

Read syntax diagramSkip visual syntax diagramREGEXP_COUNT(source-string ,pattern-expression ,start ,flags ,CODEUNITS32,CODEUNITS16OCTETS )

Das Schema ist SYSIBM.

Quellenzeichenfolge
Ein Ausdruck, der die Zeichenfolge angibt, in der die Suche stattfinden soll. Dieser Ausdruck muss eine integrierte Zeichenfolge, Grafikzeichenfolge, einen numerischen Wert, einen booleschen Wert oder einen Wert für Datum und Uhrzeit zurückgeben. Ein numerischer Wert, ein boolescher Wert oder ein Wert für Datum und Uhrzeit wird implizit in VARCHAR umgesetzt, bevor die Funktion ausgewertet wird. Eine Zeichenfolge kann das Attribut FOR BIT DATA nicht angeben (SQLSTATE 42815).
musterausdruck
Ein Ausdruck, der die Zeichenfolge des regulären Ausdrucks angibt, die das Muster für die Suche ist. Dieser Ausdruck muss eine integrierte Zeichenfolge, Grafikzeichenfolge, einen numerischen Wert, einen booleschen Wert oder einen Wert für Datum und Uhrzeit zurückgeben. Ein numerischer Wert, ein boolescher Wert oder ein Wert für Datum und Uhrzeit wird implizit in VARCHAR umgesetzt, bevor die Funktion ausgewertet wird. Die Länge eines CLOB-oder DBCLOB-Ausdrucks darf nicht größer als die maximale Länge eines Datentyps VARCHAR oder VARGRAPHIC sein. Eine Zeichenfolge kann das Attribut FOR BIT DATA nicht angeben (SQLSTATE 42815).
Start
Ein Ausdruck, der die Position innerhalb von Quellenzeichenfolge angibt, an der die Suche beginnen soll. Der Ausdruck muss eine integrierte Zeichenfolge, eine Grafikzeichenfolge, einen booleschen Wert oder einen numerischen Wert zurückgeben. Wenn der Wert nicht vom Typ INTEGER ist, wird er implizit in INTEGER umgesetzt, bevor die Funktion ausgewertet wird. Der Wert der Ganzzahl muss größer-gleich 1 sein. Wenn OCTETS angegeben ist und die Quellenzeichenfolge Grafikdaten ist, muss der Wert der Ganzzahl ungerade sein (SQLSTATE 428GC). Der Standardstartwert ist 1. Siehe Parameterbeschreibung für CODEUNITS16, CODEUNITS32oder OCTETS für die Zeichenfolgeeinheit, die für die Startposition gilt.
Flags
Ein Ausdruck, der Flags angibt, die Aspekte der Mustererkennung steuern. Der Ausdruck muss eine integrierte Zeichenfolge zurückgeben, die das Attribut FOR BIT DATA nicht angibt (SQLSTATE 42815). Die Zeichenfolge kann einen oder mehrere gültige Flagwerte enthalten und die Kombination der Flagwerte muss gültig sein (SQLSTATE 2201T). Eine leere Zeichenfolge entspricht dem Wert 'c'. Der Standardwert für das Flag ist 'c'.
Tabelle 1. Unterstützte Flagwerte
Markierungswert Beschreibung
c Gibt an, dass beim Abgleich die Groß-/Kleinschreibung beachtet werden muss. Dieses Flag ist der Standardwert, wenn 'c' oder' i ' nicht angegeben ist. Dieser Wert darf nicht mit dem Wert 'i' angegeben werden.
i Gibt an, dass beim Abgleich die Groß-/Kleinschreibung nicht beachtet werden muss. Dieser Wert darf nicht mit dem Wert 'c' angegeben werden.
m Gibt an, dass die Eingabedaten mehrere Zeilen enthalten können. Standardmäßig stimmt das Zeichen '^' in einem Muster nur mit dem Anfang der Eingabezeichenfolge überein; das Zeichen ' $' in einem Muster entspricht nur dem Ende der Eingabezeichenfolge. Wenn dieses Flag gesetzt ist, stimmen "^" und "$" auch am Anfang und am Ende jeder Zeile innerhalb der Eingabezeichenfolge überein.
n Gibt an, dass '.' Zeichen in einem Muster entspricht einem Zeilenabschlusszeichen in der Eingabezeichenfolge. Standardmäßig wird das Zeichen '.' Zeichen in einem Muster stimmt nicht mit einem Zeilenabschlusszeichen überein. Ein Paar aus Rücklauf und Zeilenvorschub in der Eingabezeichenfolge verhält sich wie ein einzeiliges Abschlusszeichen und entspricht einem einzelnen "." in einem Muster.
s Gibt an, dass '.' Zeichen in einem Muster entspricht einem Zeilenabschlusszeichen in der Eingabezeichenfolge. Dieser Wert ist ein Synonym für den Wert ' n'.
x Gibt an, dass Leerzeichen in einem Muster ignoriert werden, sofern sie nicht mit Escapezeichen versehen werden.
CODEUNITS16, CODEUNITS32oder OCTE
Gibt die Zeichenfolgeeinheit des Startwerts an:
  • CODEUNITS16 gibt an, dass der Anfangswert in 16 -Bit- UTF-16 -Codeeinheiten ausgedrückt wird.
  • CODEUNITS32 gibt an, dass der Anfangswert in 32 -Bit- UTF-32 -Codeeinheiten ausgedrückt wird. Dies ist die Standardeinstellung.
  • OCTETS gibt an, dass der Anfangswert in Byte ausgedrückt wird.

Wenn die Zeichenfolgeeinheit als CODEUNITS16 oder OCTETS angegeben wird, und wenn die Zeichenfolgeeinheit der Quellenzeichenfolge CODEUNITS32ist, wird ein Fehler zurückgegeben (SQLSTATE 428GC).

Weitere Informationen finden Sie unter "Zeichenfolgeeinheiten in integrierten Funktionen" in Zeichenfolgen.

Result

Das Ergebnis der Funktion ist ein INTEGER, der die Anzahl der Vorkommen des Musterausdrucks in der Quellenzeichenfolge darstellt. Wenn der Musterausdruck nicht gefunden wird und kein Argument null ist, ist das Ergebnis 0.

Wenn ein Argument der Funktion REGEXP_COUNT null sein kann, kann das Ergebnis null sein. Wenn ein Argument null ist, ist das Ergebnis der Nullwert.

Hinweise

  • Die Verarbeitung regulärer Ausdrücke erfolgt über die ICU-Schnittstelle für reguläre Ausdrücke (ICU = International Components for Unicode).
  • Hinweise zu Nicht-Unicode-Datenbanken
    • Ein Muster für reguläre Ausdrücke unterstützt nur Steuerzeichen mit halber Breite. Verwenden Sie einen Zeichenfolgedatentyp für das Musterausdrucksargument. Ein Zeichenfolgedatentyp kann für das Musterausdrucksargument verwendet werden, auch wenn ein Grafikzeichenfolgedatentyp für das Quellenzeichenfolgeargument verwendet wird.
    • Das Quellenzeichenfolgeargument muss ein Grafikzeichenfolgedatentyp sein, wenn das Musterausdruckargument ein Grafikzeichenfolgedatentyp ist.

Beispiel

Zählen Sie, wie oft "Steven" oder "Stephen" in der Zeichenfolge "Steven Jones und Stephen Smith sind die besten Spieler" vorkommt.
SELECT REGEXP_COUNT(
   'Steven Jones and Stephen Smith are the best players', 'Ste(v|ph)en') 
      FROM sysibm.sysdummy1
Das Ergebnis ist 2.