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

Làm cách nào để tôi có thể sử dụng regex để chia một chuỗi, sử dụng một chuỗi làm dấu phân cách?

Hãy thử các phương pháp này.

Điều này nhận được phần tử đầu tiên như bạn đã yêu cầu ban đầu:

SQL> with tbl(str) as (
      select 'Hello My Delimiter World' from dual
    )
    SELECT REGEXP_SUBSTR( str ,'(.*?)( My Delimiter |$)', 1, 1, NULL, 1 ) AS element
    FROM   tbl;

ELEME
-----
Hello

Phiên bản này phân tích cú pháp toàn bộ chuỗi. NULL phần tử được thêm vào để hiển thị nó hoạt động với phần tử bị thiếu:

SQL> with tbl(str) as (
      select ' My Delimiter Hello My Delimiter World My Delimiter  My Delimiter test My Delimiter ' from dual
    )
    SELECT LEVEL AS element,
    REGEXP_SUBSTR( str ,'(.*?)( My Delimiter |$)', 1, LEVEL, NULL, 1 ) AS element_value
    FROM   tbl
    CONNECT BY LEVEL <= regexp_count(str, ' My Delimiter ')+1;

   ELEMENT ELEMENT_VALUE
---------- --------------------
         1
         2 Hello
         3 World
         4
         5 test
         6

6 rows selected.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dấu chân máy khách tối thiểu cần thiết để kết nối C # với cơ sở dữ liệu Oracle là gì?

  2. Cách lấy vĩ độ và độ dài từ sdo_geometry trong oracle

  3. Giới thiệu về tập hợp PL / SQL trong cơ sở dữ liệu Oracle

  4. Tự động xoay bảng Oracle

  5. Truy vấn con trong oracle là gì