sql >> Database teknologi >  >> RDS >> Oracle

Hvordan kan jeg bruge regex til at opdele en streng ved at bruge en streng som afgrænsning?

Prøv disse metoder.

Dette får det første element, som du oprindeligt 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

Denne version analyserer hele strengen. NULL-elementer tilføjet for at vise, at det fungerer med manglende elementer:

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. SQL Server Index Baglæns Scan:Forståelse og justering af ydeevne

  2. Sådan administrerer du din database med Adminer

  3. SELECT DISTINCT ignorerer forskellige tilfælde

  4. Hvordan får jeg gem-installationen til at fungere på OS X Lion med Ruby 1.8.7 uden at fejle?