SQL Academy
Premium
Funktionsreferenz

REGEXP_MATCH

Entsprechung in MySQL:

Gibt ein Array von Teilstrings aus dem ersten Treffer eines regulären Ausdrucks zurück.

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

Parameter

stringtext
String, in dem gesucht wird
patterntext
Regulärer Ausdruck
flagstextoptional
Flags, zum Beispiel i, um Groß- und Kleinschreibung zu ignorieren

Rückgabewert

Text-Array (text[]) aus dem ersten Treffer; NULL, wenn es keinen Treffer gibt

Beispiele

Datumsteile aus einem Text

PostgreSQL 17.5
SELECT REGEXP_MATCH(
		'Order from 2024-03-08',
		'([0-9]{4})-([0-9]{2})-([0-9]{2})'
	);
regexp_match
20240308

Benutzername und Domain aus E-Mail

PostgreSQL 17.5
SELECT email,
	REGEXP_MATCH(email, '^(.+)@(.+)$') AS parts
FROM Users
LIMIT 5;
emailparts
barjam@hotmail.combarjamhotmail.com
tellis@me.comtellisme.com
metzzo@superhotmail.commetzzosuperhotmail.com
ralamosm@verizon.netralamosmverizon.net
barjam@hotmail.combarjamhotmail.com

Domain als Array-Element

PostgreSQL 17.5
SELECT email,
	(REGEXP_MATCH(email, '@(.+)$')) [1] AS domain
FROM Users
LIMIT 5;
emaildomain
barjam@hotmail.comhotmail.com
tellis@me.comme.com
metzzo@superhotmail.comsuperhotmail.com
ralamosm@verizon.netverizon.net
barjam@hotmail.comhotmail.com

Details

Enthält der Ausdruck Gruppen in Klammern, enthält das Array ein Element pro Gruppe, sonst ein einziges Element mit dem ganzen Treffer. Ein einzelnes Element erhältst du über seine Nummer: (REGEXP_MATCH(...))[1]. Das Flag g wird nicht unterstützt: Alle Treffer liefert REGEXP_MATCHES(..., 'g'), eine Ergebniszeile pro Treffer. Um den Treffer als String statt als Array zu erhalten, verwende REGEXP_SUBSTR, das es in PostgreSQL ab Version 15 gibt.

Siehe auch