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

Wie kann ich die letzten beiden Wörter in einem Satz in PostgreSQL abgleichen?

Anstatt REGEXP_MATCHES zu verwenden die ein Array von Übereinstimmungen zurückgibt, ist es vielleicht besser, SUBSTRING zu verwenden was Ihnen die Übereinstimmung als TEXT liefert direkt.

Mit dem richtigen Muster, wie @Abelisto es geteilt hat, können Sie Folgendes tun:

SELECT SUBSTRING('My name is Harry Potter' FROM '\w+\W+\w+$')

Dies gibt Harry Potter zurück im Gegensatz zu {"Harry Potter"}

Wenn eines der Wörter am Ende Satzzeichen enthält, wie z. B. ein Apostroph, sollten Sie laut @ Hambones Kommentar das folgende Muster verwenden:

SELECT SUBSTRING('My name is Danny O''neal' FROM '\S+\s+\S+$')

Das Obige würde Danny O'neal korrekt zurückgeben im Gegensatz zu nur O'neal