PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как мога да съпоставя последните две думи в изречение в PostgreSQL?

Вместо да използвате REGEXP_MATCHES който връща масив от съвпадения, може би е по-добре да използвате SUBSTRING което ще ви даде съвпадението като TEXT директно.

Използвайки правилния шаблон, както @Abelisto сподели, можете да направите това:

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

Това връща Harry Potter за разлика от {"Harry Potter"}

Според коментара на @Hambone, ако някоя от думите в края съдържа пунктуация, като апостроф, бихте искали да обмислите използването на следния модел:

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

Горното правилно би върнало Danny O'neal за разлика от просто O'neal



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psycopg2 еквивалент на mysqldb.escape_string?

  2. Как make_time() работи в PostgreSQL

  3. Как да напиша функция, която връща текстови или целочислени стойности?

  4. Заредете дъмпа на Postgres след докер-композиране

  5. Как да предадете масив от персонализиран тип на функцията Postgres