Itu karena ekspresi regulermu. Ubah untuk mencari hanya karakter alfabet berurutan:
select regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level) is not null
Ini juga berfungsi untuk karakter tunggal:
select regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level) is not null;
Anda telah berkomentar:
Harap selalu masukkan semua informasi dalam pertanyaan untuk memulai.
Anda tampaknya ingin memisahkan karakter baris baru (carriage return atau carriage return/line feed)
Dalam hal ini Anda ingin berpisah di tempat yang tidak salah satu karakter ini. Saya telah menggunakan semua karakter kontrol di sini karena saya malas tetapi itu akan berfungsi untuk data yang Anda berikan. Jika Anda memiliki beberapa karakter Bell, ini tidak akan berhasil, Anda harus lebih spesifik.
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;