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

Откуда:
Сообщений: 4
Имеем стринг (MYFIELD - всё одной строкой):
автор
<Ustrd xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">/SEQNO/00001</Ustrd>
<Ustrd xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">/TRANSSUBTYPE/GPS</Ustrd>
<Ustrd xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">/INITNO/123477765</Ustrd>
<Ustrd xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">remittance information</Ustrd>
<Ustrd xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">/CHANNEL/DBDI</Ustrd>
Искомый output - 123477765

Мне удалось достичь результата через:
select ltrim(regexp_substr(t.MYFIELD, '/INITNO/[^<]+'),'/INITNO/') from MYTABLE
Возможно ли прийти к тому же результату только через regexp_substr, не используя ltrim?
Большое спасибо.
31 мар 14, 19:24    [15813293]     Ответить | Цитировать Сообщить модератору
 Re: Как вырезать подстроку начиная со стринга Х, исключая сам Х? (regexp_substr)  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
Vadim K,

Да, если 11G и выше:

SCOTT@pdb1orcl12 > with mytable as (
  2  select '<Ustrd xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">/SEQNO/00001</Ustrd>
  3  <Ustrd xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">/TRANSSUBTYPE/GPS</Ustrd>
  4  <Ustrd xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">/INITNO/123477765</Ustrd>
  5  <Ustrd xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">remittance information</Ustrd>
  6  <Ustrd xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">/CHANNEL/DBDI</Ustrd>' MYFIELD from dual)
  7  select regexp_substr(t.MYFIELD, '/INITNO/([^<]+)',1,1,null,1) from MYTABLE t
  8  /

REGEXP_SU
---------
123477765

1 row selected.

SCOTT@pdb1orcl12 > 


SY.
31 мар 14, 19:45    [15813345]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить