sql >> Database >  >> RDS >> Oracle

Hoe kan ik regex gebruiken om een ​​string te splitsen, met een string als scheidingsteken?

Probeer deze methoden.

Dit krijgt het eerste element waar je oorspronkelijk om vroeg:

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

Deze versie parseert de hele string. NULL-elementen toegevoegd om te laten zien dat het werkt met ontbrekende elementen:

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-lijsttabellen:alle tabellen weergeven

  2. LEFT JOIN vs. LEFT OUTER JOIN in SQL Server

  3. Records van uur tot uur of van dag tot dag groeperen en hiaten opvullen met nul of nul

  4. Waarde berekenen met behulp van de vorige waarde van een rij in T-SQL