sql >> Databasteknik >  >> RDS >> Oracle

Hur kan jag använda regex för att dela en sträng med en sträng som avgränsare?

Prova dessa metoder.

Detta får det första elementet som du ursprungligen bad om:

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

Denna version analyserar hela strängen. NULL-element har lagts till för att visa att det fungerar med saknade element:

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. Vilket är det bästa PostgreSQL High Availability Framework? PAF vs. repmgr vs. Patroni Infographic

  2. Är det verkligen nödvändigt att skapa SQLite-tabeller varje gång programmet startar?

  3. Ändra gränsen för Mysql-radstorleken för stor

  4. Fyll i en rullgardinsruta från en mySQL-tabell i PHP