Det är på grund av ditt vanliga uttryck. Ändra den för att leta efter bara på varandra följande alfabetiska tecken:
select regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level) is not null
Det fungerar även för enstaka tecken:
select regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level) is not null;
Du har kommenterat:
Vänligen ange alltid all information i frågan till att börja med.
Du verkar vara ute efter att dela på ett nyradstecken (vagnretur eller vagnretur/radmatning)
I så fall vill du dela där något inte är en av dessa karaktärer. Jag har använt alla kontrolltecken här eftersom jag är lat men det kommer att fungera för dina angivna data. Om du har några Bell-karaktärer kommer detta inte att fungera, du måste vara mer specifik.
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;