Това е заради обичайния ви израз. Променете го, за да търсите само последователни азбучни знаци:
select regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level) is not null
Работи и за единични знаци:
select regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level) is not null;
Вие коментирахте:
Моля, винаги поставяйте цялата информация във въпроса като начало, моля.
Изглежда търсите да разделите знак за нов ред (връщане на каретка или връщане на каретка/подаване на ред)
В който случай търсите да се разделите там, където нещо не един от тези герои. Използвах всички контролни знаци тук, защото съм мързелив, но ще работи за предоставените от вас данни. Ако имате някои символи на Bell, това няма да работи, ще трябва да сте по-конкретни.
with the_data as (
select 'a
b
c' as dat
from dual
)
select regexp_substr(dat, '[^[:cntrl:]]+', 1 ,level)
from the_data
connect by regexp_substr(dat, '[^[:cntrl:]]+', 1 ,level) is not null;