Je to kvůli vašemu regulárnímu výrazu. Změňte jej tak, aby hledal jen po sobě jdoucí abecední znaky:
select regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level) is not null
Funguje také pro jednotlivé znaky:
select regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level) is not null;
Přidali jste komentář:
Pro začátek prosím vždy uveďte všechny informace do otázky.
Zdá se, že se snažíte rozdělit na znak nového řádku (carriage return nebo carriage return/line feed)
V takovém případě se snažíte rozdělit tam, kde něco není jedna z těchto postav. Použil jsem zde všechny řídicí znaky, protože jsem líný, ale bude to fungovat pro vaše poskytnutá data. Pokud máte nějaké postavy Bell, toto nebude fungovat, budete muset být konkrétnější.
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;