Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ekspresi reguler untuk baris terpisah kata-kata panjang yang berbeda

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menampilkan catatan dari tabel yang dipesan seperti pada klausa where?

  2. Periksa tabel ada atau tidak sebelum membuatnya di Oracle

  3. Cara membuat batasan bukan nol di Oracle

  4. Mendapatkan buffer keluaran dari DBMS_OUTPUT.GET_LINES di C#

  5. Ubah Kunci Utama