È a causa della tua espressione regolare. Cambialo per cercare solo caratteri alfabetici consecutivi:
select regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level) is not null
Funziona anche per singoli caratteri:
select regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level) is not null;
Hai commentato:
Per favore, inserisci sempre tutte le informazioni nella domanda per cominciare, per favore.
Sembra che tu stia cercando di dividere su un carattere di nuova riga (ritorno a capo o ritorno a capo/avanzamento riga)
Nel qual caso stai cercando di dividere dove qualcosa non uno di questi personaggi. Ho usato tutti i caratteri di controllo qui perché sono pigro ma funzionerà con i dati forniti. Se hai dei personaggi Bell, questo non funzionerà, dovrai essere più specifico.
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;