Функция REGEXP_SUBSTR SPLIT - PullRequest
       23

Функция REGEXP_SUBSTR SPLIT

0 голосов
/ 08 января 2020

Я хочу разделить это на 2019/GA/0000104

select REGEXP_SUBSTR('2019/0000015,2019/GA/0000104,2cdb376e-2966-4f24-9063-f4c6f31a6f35', '[^,]+')
from dual;

Вывод = 2019/GA/0000104

Вы, ребята, можете помочь?

Ответы [ 3 ]

0 голосов
/ 08 января 2020

Попробуйте использовать REGEXP_SUBSTR с группой захвата:

SELECT
    REGEXP_SUBSTR(input, ',(.*),', 1, 1, NULL, 1)
FROM yourTable;

Демо

0 голосов
/ 08 января 2020

Эта форма регулярного выражения возвращает второе вхождение строки символов, за которой следует запятая или конец строки. Возвращает правильный элемент, если первый из них должен быть NULL.

with tbl(str) as (
  select '2019/0000015,2019/GA/0000104,2cdb376e-2966-4f24-9063-f4c6f31a6f35' from dual
)
select regexp_substr(str, '(.*?)(,|$)', 1, 2, NULL, 1)
from tbl;
0 голосов
/ 08 января 2020

Кажется, что вы хотите извлечь вторую подстроку. Если это так, то вы можете использовать

  • regexp_substr (result) или
  • substr + в комбинации enter code here str (result2)

SQL> with test (col) as
  2    (select '2019/0000015,2019/GA/0000104,2cdb376e-2966-4f24-9063-f4c6f31a6f35' from dual)
  3  select regexp_substr(col, '[^,]+', 1, 2) result,
  4         --
  5         substr(col, instr(col, ',', 1, 1) + 1,
  6                     instr(col, ',', 1, 2) - instr(col, ',', 1, 1) - 1
  7               ) result2
  8  from test;

RESULT          RESULT2
--------------- ---------------
2019/GA/0000104 2019/GA/0000104

SQL>
...