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.9
REGEXP_MATCH(string, pattern[, flags])
  • [ ]optionaler Teil
string
String, in dem gesucht wird
text
pattern
Regulärer Ausdruck
text
flags
Flags, zum Beispiel i, um Groß- und Kleinschreibung zu ignorieren
textOptional
bceimnpqstwx

Rückgabewert

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

Beispiele

Datumsteile aus einem Text

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

Benutzername und Domain aus E-Mail

PostgreSQL 17.9
SELECT email,
	REGEXP_MATCH(email, '^(.+)@(.+)$') AS parts
FROM Users
LIMIT 5;
emailparts
barjam@hotmail.com["barjam","hotmail.com"]
tellis@me.com["tellis","me.com"]
metzzo@superhotmail.com["metzzo","superhotmail.com"]
ralamosm@verizon.net["ralamosm","verizon.net"]
barjam@hotmail.com["barjam","hotmail.com"]

Domain als Array-Element

PostgreSQL 17.9
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