Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak mogę użyć wyrażenia regularnego do podzielenia ciągu, używając ciągu jako separatora?

Wypróbuj te metody.

To otrzymuje pierwszy element, o który pierwotnie prosiłeś:

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

Ta wersja analizuje cały ciąg. Dodano elementy NULL, aby pokazać, że działa z brakującymi elementami:

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. Oracle, PDO_OCI a OCI8

  2. Jak mogę wyeksportować zawartość tabeli Oracle do pliku?

  3. Jak uruchomić skrypt SQL Plus w PowerShell

  4. 2 sposoby zwracania wierszy zawierających tylko znaki alfanumeryczne w Oracle

  5. Wyszukaj, czy liczba jest zawarta w wyrażeniu takim jak:1-3,5,10-15,20