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

ORA-12728:rentang tidak valid dalam ekspresi reguler

Regexp jangan gunakan \ untuk melindungi - dalam ekspresi tanda kurung . Anda hanya perlu memasukkan - sebagai karakter pertama, tepat setelah tanda kurung buka:

IF REGEXP_LIKE('--,,::', '[\-,:]*')
...

=> ORA-12728: invalid range in regular expression

Jika Anda penasaran, ketika menemukan [\-,:] Oracle mengerti:"karakter apapun dalam rentang dari \ ke , atau karakter : " . Alasan mengapa ini menimbulkan pengecualian adalah \ tampaknya setelah , sesuai dengan nilai ASCII mereka. Dan Oracle tidak menerima rentang memiliki nilai awal setelah nilai akhir.

Sebaliknya:

 IF REGEXP_LIKE('--,,::', '[-,:]*')

Bekerja seperti yang diharapkan.

Sebagai catatan tambahan, [-,:]{0,1} artinya "nol atau satu kemunculan - atau , atau : " bisa ditulis [-,:]? .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ubah tabel ubah kolom di database Oracle

  2. Menyebarkan Pusat Data Cloudera CDP di Oracle Cloud Infrastructure (OCI)

  3. Bagaimana cara mengembalikan beberapa baris dari prosedur tersimpan? (Oracle PL/SQL)

  4. PDB Cabut Kesalahan ORA-17528

  5. mengembalikan hasil dari fungsi