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

Hvordan kan jeg matche de sidste to ord i en sætning i PostgreSQL?

I stedet for at bruge REGEXP_MATCHES som returnerer en række matches, kan du være bedre stillet ved at bruge SUBSTRING hvilket vil give dig matchet som TEXT direkte.

Ved at bruge det korrekte mønster, som @Abelisto delte, kan du gøre dette:

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

Dette returnerer Harry Potter i modsætning til {"Harry Potter"}

Ifølge @Hambones kommentar, hvis et af ordene i slutningen indeholder tegnsætning, som en apostrof, vil du overveje at bruge følgende mønster:

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

Ovenstående ville korrekt returnere Danny O'neal i modsætning til bare O'neal



  1. Hvordan tilføjer jeg indekser til MySQL-tabeller?

  2. Automatiseret eller regelmæssig backup af mysql-data

  3. GROUP BY i UPDATE FROM-klausulen

  4. Gentagende værdier i en kolonne