Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

biểu thức chính quy cho các từ dài dòng được phân tách bằng các từ dài khác nhau

Đó 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng Temp toàn cầu - SQL Server vs Oracle

  2. Cách xuất dữ liệu thành tệp CSV trong Oracle bằng quy trình PL SQL

  3. Làm thế nào để in kết quả trong một dòng khác nhau bằng cách sử dụng truy vấn SQL?

  4. oracle làm thế nào để xoay bảng của tôi

  5. Truy vấn Oracle TIMESTAMP VỚI TIMEZONE