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;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;Großbuchstaben in Namen
PostgreSQL 17.5
SELECT member_name,
(REGEXP_MATCHES(member_name, '[A-Z]', 'g')) [1] AS capital
FROM FamilyMembers;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.