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

Làm cách nào để trích xuất nhóm từ biểu thức chính quy trong Oracle?

Tham số thứ ba của hàm REGEXP_SUBSTR cho biết vị trí trong chuỗi đích (de_desc trong ví dụ của bạn) nơi bạn muốn bắt đầu tìm kiếm. Giả sử tìm thấy một kết quả phù hợp trong phần đã cho của chuỗi, thì điều đó không ảnh hưởng đến những gì được trả về.

Trong Oracle 11g, có một tham số thứ sáu cho hàm mà tôi nghĩ là những gì bạn đang cố gắng sử dụng, cho biết nhóm nắm bắt mà bạn muốn trả về. Một ví dụ về cách sử dụng hợp lý sẽ là:

SELECT regexp_substr('abc[def]ghi', '\[(.+)\]', 1,1,NULL,1) from dual;

Nơi tham số cuối cùng 1 cho biết số lượng nhóm chụp mà bạn muốn trả lại. Đây là liên kết đến tài liệu mô tả tham số.

10g dường như không có tùy chọn này, nhưng trong trường hợp của bạn, bạn có thể đạt được kết quả tương tự với:

select substr( match, 2, length(match)-2 ) from (
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]') match FROM dual
);

vì bạn biết rằng một trận đấu sẽ có chính xác một ký tự thừa ở đầu và cuối. (Ngoài ra, bạn có thể sử dụng RTRIM và LTRIM để xóa dấu ngoặc ở cả hai phần cuối của kết quả.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi nên chỉ định setFetchSize () () là gì và khi nào?

  2. Phiên bản Oracle ODP.NET thay thế bất khả tri

  3. Cơ sở dữ liệu Oracle 20c Các tính năng mới

  4. Bảng ALTER &DROP DDL với việc thực thi ngay lập tức trong cơ sở dữ liệu Oracle

  5. Oracle 10g chấp nhận năm chữ số trong một ngày