Đó là do biểu thức chính quy của bạn. Thay đổi nó để tìm kiếm chỉ các ký tự chữ cái liên tiếp:
select regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level) is not null
Nó cũng hoạt động cho các ký tự đơn lẻ:
select regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level) is not null;
Bạn đã nhận xét:
Vui lòng luôn điền tất cả thông tin vào câu hỏi để bắt đầu.
Có vẻ như bạn đang tìm cách tách trên một ký tự dòng mới (ký tự xuống dòng hoặc ký tự xuống dòng / nguồn cấp dữ liệu dòng)
Trong trường hợp đó, bạn đang tìm cách phân biệt đâu là nơi không một trong những ký tự này. Tôi đã sử dụng tất cả các ký tự điều khiển ở đây vì tôi lười nhưng nó sẽ hoạt động với dữ liệu bạn cung cấp. Nếu bạn có một số ký tự Bell, điều này sẽ không hoạt động, bạn sẽ phải cụ thể hơn.
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;