powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / regexp вытащить энное слово из текста
5 сообщений из 5, страница 1 из 1
regexp вытащить энное слово из текста
    #38518094
kkv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть тект
"wqer wetr кеке werwerw"
между словами разное количество пробелов
как выдернуть второе или третье или энное слово из текста используя substring?
...
Рейтинг: 0 / 0
regexp вытащить энное слово из текста
    #38518628
kamakama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kkv79,

А зачем substring? regex_split(text,'[\s]+')[n]
...
Рейтинг: 0 / 0
regexp вытащить энное слово из текста
    #38519915
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select (regexp_split_to_array('wqer wetr кеке werwerw', '\s+'))[2];

9.4. String Functions and Operators
...
Рейтинг: 0 / 0
regexp вытащить энное слово из текста
    #38538832
AndreiSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeXa NalBat,

у меня всегда были вопросы к быстродействию функции regexp_split_to_array, вот и здесь вызов двух ф-ий оказывается почти в 4 раза быстрее:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
postgres=# EXPLAIN ANALYZE select (regexp_split_to_array('wqer  wetr кеке werwerw ' || i, '\s+'))[2] from generate_series(1, 100000) as i;
                                                         QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------
 Function Scan on generate_series i  (cost=0.00..20.00 rows=1000 width=4) (actual time=15.396..1115.696 rows=100000 loops=1)
 Total runtime: 1131.406 ms
(2 rows)

postgres=# EXPLAIN ANALYZE select split_part(regexp_replace('wqer  wetr кеке werwerw ' || i, '\s+', ' '), ' ', 2) from generate_series(1, 100000) as i;
                                                         QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------
 Function Scan on generate_series i  (cost=0.00..22.50 rows=1000 width=4) (actual time=15.367..286.597 rows=100000 loops=1)
 Total runtime: 295.583 ms
(2 rows)

При этом при увеличении длины исходной строки время расходится еще больше.
...
Рейтинг: 0 / 0
regexp вытащить энное слово из текста
    #38539388
raul_83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используя substring 3-е слово
Код: sql
1.
select substring('wqer wetr кеке werwerw' from '(?:[^\\s]+\\s+){2}([^\\s]+)\\s+')
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / regexp вытащить энное слово из текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]