sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo puedo hacer coincidir las dos últimas palabras en una oración en PostgreSQL?

En lugar de usar REGEXP_MATCHES que devuelve una serie de coincidencias, es mejor que uses SUBSTRING que le dará la coincidencia como TEXT directamente.

Usando el patrón correcto, como compartió @Abelisto, puedes hacer esto:

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

Esto devuelve Harry Potter a diferencia de {"Harry Potter"}

Según el comentario de @Hambone, si alguna de las palabras al final contiene puntuación, como un apóstrofe, debería considerar usar el siguiente patrón:

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

Lo anterior devolvería correctamente Danny O'neal a diferencia de solo O'neal