Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 regexp_substr  [new]
dimyaz
Member

Откуда:
Сообщений: 414
Есть строки со значениями в [][] и возможным различным мусором между ними.

Как вытащить в двух столбцах первое и второе значения каждой скобки?

У меня получилось вот так, но если будут символы между скобками, то уже не сработает запрос

with t1 as (
     select '[v1][p1]' txt from dual union all
     select '[v2][p2]' txt from dual 
)
select
  regexp_substr(txt,'(\[)([^]]+)',1,1,'i',2) v,
  regexp_substr(txt,'(\]\[)([^]]+)',1,1,'i',2) p
 , txt
from t1


1v1p1[v1][p1]
2v2p2[v2][p2]
1 ноя 17, 13:00    [20918681]     Ответить | Цитировать Сообщить модератору
 Re: regexp_substr  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28120
dimyaz
то уже не сработает
Hint: тебе нужно второе вхождение, а не другое выражение.
1 ноя 17, 13:23    [20918766]     Ответить | Цитировать Сообщить модератору
 Re: regexp_substr  [new]
dimyaz
Member

Откуда:
Сообщений: 414
Elic, да спасибо
такая конструкция понадежнее выглядит

with t1 as (
     select '[v1][p1]' txt from dual union all
     select '[v2][p2]' txt from dual 
)
select
  regexp_substr(txt,'(\[)([^]]+)',1,1,'i',2) v,
  regexp_substr(txt,'(\[)([^]]+)',1,2,'i',2) p,
  txt
from t1
1 ноя 17, 13:52    [20918857]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить