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

Oracle SQL nhận phần tử thứ n regexp

Nếu các giá trị được phân tách của bạn luôn là chữ và số ở giữa các dấu phẩy thì bạn có thể thử:

SELECT REGEXP_SUBSTR( <delimied_string>, '[[:alnum:]]{0,},', 1, 7 )
  FROM dual;

Để nhận giá trị thứ bảy (bao gồm cả dấu phẩy ở cuối). Nếu nó trống, bạn chỉ cần lấy dấu phẩy ở cuối (bạn có thể dễ dàng loại bỏ).

Rõ ràng, nếu bạn muốn một giá trị khác với giá trị thứ bảy thì hãy thay đổi giá trị tham số thứ tư thành bất kỳ lần xuất hiện thứ n nào bạn muốn, ví dụ:

SELECT REGEXP_SUBSTR( <delimied_string>, '[[:alnum:]]{0,},', 1, <nth occurance> )
  FROM dual;

CHỈNH SỬA:Như tôi yêu thích REGEX đây là một giải pháp cũng loại bỏ dấu phẩy ở cuối

SELECT REPLACE(
          REGEXP_SUBSTR(<delimied_string>, '[[:alnum:]]{0,},', 1, <nth>), 
          ','
       )
  FROM dual;

hy vọng nó sẽ giúp



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm Oracle trả về sự giống nhau giữa các chuỗi

  2. Oracle - con trỏ sử dụng dbms_utility.exec_ddl_statement không thực thi đúng cách

  3. Oracle tạo thủ tục gọi một hàm

  4. Từ khóa 'CONTINUE' trong Oracle 10g PL / SQL

  5. Lý do xóa ORA-01422:tìm nạp chính xác trả về nhiều hơn số hàng được yêu cầu