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

Masalah dengan regex Oracle

* operator 'serakah' secara default . Anda mengizinkan karakter apa pun antara distinct dan ) , dalam jumlah berapa pun. dan termasuk ) first pertama sendiri.

Seperti yang disarankan oleh EatÅPeach, Anda dapat membuatnya tidak serakah dengan ? :

Jadi di sini, dengan .*? bukannya .* :

select regexp_substr(
  'select count(distinct empno), count(distinct deptno) from emp',
    'count\(distinct.*?\)')
from dual;

Atau Anda dapat menentukan karakter apa saja kecuali ) dengan [^)]* bukannya .* .

select regexp_substr(
  'select count(distinct empno), count(distinct deptno) from emp',
    'count\(distinct[^)]*\)')
from dual;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menginstal formulir Oracle dan mendapat kesalahan. Tidak dapat meluncurkan penginstal (555)

  2. Kesalahan tipe data Oracle

  3. Pilih 150 baris pertama, lalu 150 berikutnya dan seterusnya?

  4. Dapatkan jumlah nilai kolom tertentu di Oracle dengan gabungan dalam

  5. Performa sangat lambat di Django dengan server Oracle jarak jauh