PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como posso combinar as duas últimas palavras em uma frase no PostgreSQL?


Em vez de usar REGEXP_MATCHES que retorna uma matriz de correspondências, talvez seja melhor usar SUBSTRING que lhe dará a correspondência como TEXT diretamente.

Usando o padrão correto, como @Abelisto compartilhou, você pode fazer isso:
SELECT SUBSTRING('My name is Harry Potter' FROM '\w+\W+\w+$')

Isso retorna Harry Potter ao contrário de {"Harry Potter"}

De acordo com o comentário de @Hambone, se alguma das palavras no final contiver pontuação, como um apóstrofo, considere usar o seguinte padrão:
SELECT SUBSTRING('My name is Danny O''neal' FROM '\S+\s+\S+$')

O acima retornaria corretamente Danny O'neal em vez de apenas O'neal