Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / regexp вытащить энное слово из текста / 5 сообщений из 5, страница 1 из 1
05.01.2014, 19:05:15
    #38518094
kkv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp вытащить энное слово из текста
есть тект
"wqer wetr кеке werwerw"
между словами разное количество пробелов
как выдернуть второе или третье или энное слово из текста используя substring?
...
Рейтинг: 0 / 0
06.01.2014, 17:49:12
    #38518628
kamakama
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp вытащить энное слово из текста
kkv79,

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

9.4. String Functions and Operators
...
Рейтинг: 0 / 0
27.01.2014, 12:49:46
    #38538832
AndreiSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp вытащить энное слово из текста
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
27.01.2014, 17:09:02
    #38539388
raul_83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp вытащить энное слово из текста
Используя substring 3-е слово
Код: sql
1.
select substring('wqer wetr кеке werwerw' from '(?:[^\\s]+\\s+){2}([^\\s]+)\\s+')
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / regexp вытащить энное слово из текста / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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