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

Bagaimana saya bisa menggunakan regex untuk membagi string, menggunakan string sebagai pembatas?

Coba metode ini.

Ini mendapatkan elemen pertama seperti yang Anda minta:

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

Versi ini mem-parsing seluruh string. Elemen NULL ditambahkan untuk menunjukkan bahwa itu berfungsi dengan elemen yang hilang:

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. Menyebarkan Pusat Data Cloudera CDP di Oracle Cloud Infrastructure (OCI)

  2. Koleksi Oracle PL/SQL - Buat Tabel Bersarang di Database

  3. EXP() Fungsi di Oracle

  4. string literal terlalu panjang - cara menetapkan data xml panjang ke tipe data gumpalan di Oracle 11g r2

  5. Bagaimana cara memasukkan cap waktu di Oracle?