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

Sự cố với Oracle regex

* toán tử 'tham lam' theo mặc định . Bạn đang cho phép bất kỳ ký tự nào giữa distinct) , với số lượng bất kỳ. và bao gồm ) đầu tiên chính nó.

Như EatÅPeach đã đề xuất, bạn có thể làm cho nó không tham lam bằng ? :

Vì vậy, ở đây, với .*? thay vì .* :

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

Hoặc bạn có thể chỉ định nó phải là bất kỳ ký tự nào ngoại trừ ) với [^)]* thay vì .* .

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. Làm thế nào để thực hiện các công việc trong oracle?

  2. Hướng dẫn sql Oracle:Câu lệnh Sql cơ bản

  3. Oracle:Trích xuất đại diện cơ sở dữ liệu đồ họa

  4. Hàm LEAST () trong Oracle

  5. Thủ tục Oracle đơn giản không thành công