Oracle
 sql >> база данни >  >> RDS >> Oracle

Как мога да използвам регулярен израз за разделяне на низ, като използвам низ като разделител?

Опитайте тези методи.

Това получава първия елемент, както първоначално поискахте:

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

Тази версия анализира целия низ. Добавени са NULL елементи, за да се покаже, че работи с липсващи елементи:

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. грешка:ORA-65096:невалидно име на общ потребител или роля в oracle

  2. Има ли най-добрият начин да избегнете изпълнението на процес повече от веднъж в Oracle?

  3. Oracle SQL - Как да извлечете най-високите 5 стойности на колона

  4. Защо не мога да направя a с x като (...) с ADODB и Oracle?

  5. Как да използвате Distributed AD, за да намалите времето за корекция в Oracle EBS