Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / regexp_replace, помогите убрать дубли / 6 сообщений из 6, страница 1 из 1
27.10.2017, 10:20
    #39543034
sven_12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace, помогите убрать дубли
Помогите пожалуйста убрать дубли в строке вида

Код: plsql
1.
2.
3.
with q as
 (select 'qwer<br>qwer<br>asdf<br>asdf<br>zxcv<br>zxcv' val from dual)
select * from q



используя regexp_replace

Должно получиться
Код: plsql
1.
qwer<br>asdf<br>zxcv



Спасибо.
...
Рейтинг: 0 / 0
27.10.2017, 10:37
    #39543046
regexp_replace, помогите убрать дубли
Код: plsql
1.
2.
3.
4.
5.
6.
with q as (select 'qwer<br>qwer<br>asdf<br>asdf<br>zxcv<br>zxcv' val from dual),
     t as (select replace(val,'<br>',';') v from q),
     t1 as (select level l, regexp_substr(v,'[^;]+',1,level) v  from t connect by level <= regexp_count(v,';')),
     t2 as (select min(l) l, v from t1 group by v)
select listagg(v,'<bt>') within group (order by l)
from t2     
...
Рейтинг: 0 / 0
27.10.2017, 10:42
    #39543049
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace, помогите убрать дубли
Код: plsql
1.
regexp_replace(val, '([^<>]+)\<br\>\1', '\1')

Неискушённому это может показаться правильным решением.
Код: plsql
1.
'qwer<br>qwerty<br>asdf<br>df<br>zxcv<br>cvmnb'

...
Рейтинг: 0 / 0
27.10.2017, 10:50
    #39543052
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace, помогите убрать дубли
Код: plsql
1.
'(^|\>)([^<>]+)\<br\>\2(\<|$)', '\1\2\3'

...
Рейтинг: 0 / 0
27.10.2017, 12:07
    #39543127
sven_12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace, помогите убрать дубли
Elic,

подскажи пожалуйста, почему в случае если в строке встречается точка a href="myurl=: . "
то все перестает работать :(

Код: plsql
1.
2.
3.
4.
5.
with q as
 (select '<a href="myurl=:.">qwer</a><br><a href="myurl=:.">qwer</a><br><a href="myurl=:.">asdf</a><br><a href="myurl=:.">asdf</a><br><a href="myurl=:.">zxcv</a><br><a href="myurl=:.">zxcv</a>' val
    from dual)
select regexp_replace(val, '([^.]+)(\<br\>\1)+', '\1') res
  from q



И как это обойти?

Т.е. без "точки" все работает,

Код: plsql
1.
2.
3.
4.
5.
with q as
 (select '<a href="myurl=::">qwer</a><br><a href="myurl=::">qwer</a><br><a href="myurl=::">asdf</a><br><a href="myurl=::">asdf</a><br><a href="myurl=::">zxcv</a><br><a href="myurl=::">zxcv</a>' val
    from dual)
select regexp_replace(val, '([^.]+)(\<br\>\1)+', '\1') res
  from q



а с ней нет :(
...
Рейтинг: 0 / 0
27.10.2017, 12:19
    #39543142
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace, помогите убрать дубли
sven_12И как это обойти? http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / regexp_replace, помогите убрать дубли / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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