sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur kan jag matcha de två sista orden i en mening i PostgreSQL?

Istället för att använda REGEXP_MATCHES som returnerar en mängd matchningar, kanske du är bättre att använda SUBSTRING vilket ger dig matchningen som TEXT direkt.

Genom att använda rätt mönster, som @Abelisto delade, kan du göra detta:

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

Detta returnerar Harry Potter i motsats till {"Harry Potter"}

Enligt @Hambones kommentar, om något av orden i slutet innehåller interpunktion, som en apostrof, skulle du vilja överväga att använda följande mönster:

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

Ovanstående skulle korrekt returnera Danny O'neal i motsats till bara O'neal



  1. Dynamisk övervakning av PostgreSQL-instanser med pg_top

  2. Hur lägger man till PostgreSQL-datakälla till WildFly 9.0?

  3. Databasdesign:ett stort bord eller separata tabeller?

  4. Hur räknar man dagar utom söndagar mellan två datum i Postgres?