PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment puis-je faire correspondre les deux derniers mots d'une phrase dans PostgreSQL ?

Au lieu d'utiliser REGEXP_MATCHES qui renvoie un tableau de correspondances, vous feriez peut-être mieux d'utiliser SUBSTRING qui vous donnera la correspondance sous forme de TEXT directement.

En utilisant le modèle correct, comme @Abelisto l'a partagé, vous pouvez le faire :

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

Cela renvoie Harry Potter par opposition à {"Harry Potter"}

Selon le commentaire de @Hambone, si l'un des mots à la fin contient de la ponctuation, comme une apostrophe, vous voudrez peut-être envisager d'utiliser le modèle suivant :

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

Ce qui précède renverrait correctement Danny O'neal par opposition à juste O'neal