REGEXP_INSTR
Gibt die Position eines Treffers für einen regulären Ausdruck in einem String zurück.
PostgreSQL 17.5
REGEXP_INSTR(string, pattern[, start[, occurrence[, endoption[, flags[, subexpr]]]]])Parameter
- stringtext
- String, in dem gesucht wird
- patterntext
- Regulärer Ausdruck
- startintegeroptional
- Position, ab der gesucht wird, standardmäßig 1
- occurrenceintegeroptional
- Nummer des Treffers, standardmäßig 1
- endoptionintegeroptional
- 0 für die Position, an der der Treffer beginnt (standardmäßig), 1 für die Position direkt nach seinem Ende
- flagstextoptional
- Flags, zum Beispiel i, um Groß- und Kleinschreibung zu ignorieren
- subexprintegeroptional
- Nummer der Gruppe in Klammern, deren Position zurückgegeben wird; standardmäßig 0, der ganze Treffer
Rückgabewert
Ganze Zahl, die Position ab 1; 0, wenn es keinen Treffer gibt
Beispiele
Positionen der Treffer
PostgreSQL 17.5
SELECT REGEXP_INSTR('a1b22c333', '[0-9]+') AS FIRST,
REGEXP_INSTR('a1b22c333', '[0-9]+', 1, 2) AS SECOND,
REGEXP_INSTR('a1b22c333', '[0-9]+', 1, 2, 1) AS after_second,
REGEXP_INSTR('abc', '[0-9]') AS not_found;Wo der Nachname beginnt
PostgreSQL 17.5
SELECT member_name,
REGEXP_INSTR(member_name, '[A-Z]', 1, 2) AS last_name_start
FROM FamilyMembers;Details
Die Funktion gibt es seit PostgreSQL 15. Positionen beginnen bei 1. Um einen einfachen Teilstring ohne Muster zu finden, sind STRPOS oder POSITION einfacher.