sql >> Database >  >> RDS >> PostgreSQL

Hoe kan ik de laatste twee woorden in een zin in PostgreSQL matchen?

In plaats van REGEXP_MATCHES . te gebruiken die een reeks overeenkomsten retourneert, kunt u beter SUBSTRING . gebruiken die je de overeenkomst geeft als TEXT rechtstreeks.

Met het juiste patroon, zoals @Abelisto deelde, kun je dit doen:

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

Dit retourneert Harry Potter in tegenstelling tot {"Harry Potter"}

Volgens de opmerking van @Hambone, als een van de woorden aan het einde interpunctie bevat, zoals een apostrof, zou je het volgende patroon kunnen overwegen:

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

Het bovenstaande zou correct Danny O'neal . retourneren in tegenstelling tot alleen O'neal



  1. ORA-01658:kan INITIAL-extent niet maken voor segment in tabelruimte TS_DATA

  2. Android - probeer een reeds gesloten object opnieuw te openen:SQLiteQuery met loaderManager

  3. Grondbeginselen van tabeluitdrukkingen, deel 3 – Afgeleide tabellen, overwegingen voor optimalisatie

  4. PostgreSQL bewaken in een hybride omgeving