SQL Academy
Premium
Funktionsreferenz

REGEXP_MATCHES

Gibt Treffer eines regulären Ausdrucks zurück: mit dem Flag g alle, eine Ergebniszeile pro Treffer.

PostgreSQL 17.5
REGEXP_MATCHES(string, pattern[, flags])

Parameter

stringtext
String, in dem gesucht wird
patterntext
Regulärer Ausdruck
flagstextoptional
Flags: g für alle Treffer, i, um Groß- und Kleinschreibung zu ignorieren

Rückgabewert

Menge von Arrays text[]; leere Menge, wenn es keine Treffer gibt

Beispiele

Alle Zahlen in einem String

PostgreSQL 17.5
SELECT REGEXP_MATCHES('a1b22c333', '[0-9]+', 'g') AS numbers;
numbers
1
22
333

Teile jedes Datums

PostgreSQL 17.5
SELECT REGEXP_MATCHES(
		'2024-03-08, 2025-12-31',
		'([0-9]{4})-([0-9]{2})-([0-9]{2})',
		'g'
	) AS date_parts;
date_parts
20240308
20251231

Großbuchstaben in Namen

PostgreSQL 17.5
SELECT member_name,
	(REGEXP_MATCHES(member_name, '[A-Z]', 'g')) [1] AS capital
FROM FamilyMembers;
member_namecapital
Headley QuinceyH
Headley QuinceyQ
Flavia QuinceyF
Flavia QuinceyQ
Andie QuinceyA
Andie QuinceyQ
Lela QuinceyL
Lela QuinceyQ
Annie QuinceyA
Annie QuinceyQ

Details

Jeder Treffer ist ein Array text[]: ein Element pro Gruppe in Klammern oder ein einziges Element mit dem ganzen Treffer. Ohne das Flag g wird nur der erste Treffer zurückgegeben.

Die Funktion gibt eine Menge von Zeilen zurück, deshalb vervielfacht sie in SELECT eine Tabellenzeile, und gibt es keine Treffer, verschwindet die Zeile aus dem Ergebnis. Um die Zeile zu behalten, verwende REGEXP_MATCH: Es gibt einen Treffer oder NULL zurück.

Siehe auch