PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come posso abbinare le ultime due parole in una frase in PostgreSQL?

Invece di usare REGEXP_MATCHES che restituisce una serie di corrispondenze, potresti fare meglio a usare SUBSTRING che ti darà la corrispondenza come TEXT direttamente.

Usando lo schema corretto, come condiviso da @Abelisto, puoi farlo:

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

Questo restituisce Harry Potter al contrario di {"Harry Potter"}

Secondo il commento di @Hambone, se una delle parole alla fine contiene segni di punteggiatura, come un apostrofo, dovresti prendere in considerazione l'utilizzo del seguente schema:

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

Quanto sopra restituirebbe correttamente Danny O'neal al contrario del solo O'neal