PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL-Erfassungsgruppe für reguläre Ausdrücke in select

Wenn Sie versuchen, die aus dem Ausdruck resultierende Regex-Übereinstimmung zu erfassen, dann substring würde den Trick machen:

select substring ('I have a dog', 'd[aeiou]g')

Würde jede Übereinstimmung zurückgeben, in diesem Fall "Hund."

Ich denke, das fehlende Glied dessen, was Sie oben versucht haben, war, dass Sie den Ausdruck, den Sie erfassen möchten, in Klammern setzen müssen. regexp_matches würde in diesem Fall funktionieren (wenn Sie den zu erfassenden Ausdruck in Klammern eingeschlossen hätten), würde aber bei jeder Übereinstimmung ein Textarray zurückgeben. Wenn es eine Übereinstimmung gibt, substring ist irgendwie praktisch.

Kommen wir also zurück zu Ihrem Beispiel, wenn Sie versuchen, stuff zurückzugeben wenn und nur wenn es am Anfang einer Spalte steht:

select substring (column, '^(stuff)')

oder

select (regexp_matches (column, '^(stuff)'))[1]