Я имел дело с проблемой, которая беспокоила меня со вчерашнего дня. Я не могу разбить строки с помощью разделителя (например, трубы "|"), который содержит пустые строки. Например, моя строка foo||bar|job|
Я применил запрос
select REPLACE(regexp_substr('foo||bar|job|','[^|]*(|)?',1,level),'|') output, level
from dual
connect by level <= length(regexp_replace('foo||bar|job|','[^|]+')) + 1
ORDER BY level
И все же он не возвращает хороший результат. Я получаю:
1. foo
2.
3.
4. bar
5.
Я также пробовал это решение (ORACLE PL- SQL Как РАЗДЕЛИТЬ строку и ВЕРНУТЬ список, используя функцию ), но я не могу адаптировать его в строки с "|" разделитель.
with tbl(str) as (select 'foo||bar|job|' from dual )
select regexp_substr(str, '(.*?)(/||$)', 1, level, null, 1) element
from tbl connect by level <= regexp_count(str, '|')+1;
В результате получается таблица, содержащая только 13 пустых строк. Что мне следует, кроме такого списка (или таблицы):
1. foo
2.
3. bar
4. job
5.
Заранее спасибо.