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

Opdel streng efter mellemrum og tegn som skilletegn i Oracle med regexp_substr

SQL Fiddle

Oracle 11g R2 Schema Setup :

CREATE TABLE TEST( str ) AS
          SELECT 'Hello world - test-test! - test' FROM DUAL
UNION ALL SELECT 'Hello world2 - test2 - test-test2' FROM DUAL;
 

Forespørgsel 1 :

SELECT Str,
       COLUMN_VALUE AS Occurrence,
       REGEXP_SUBSTR( str ,'(.*?)([[:space:]]-[[:space:]]|$)', 1, COLUMN_VALUE, NULL, 1 ) AS split_value
FROM   TEST,
       TABLE(
         CAST(
           MULTISET(
             SELECT LEVEL
             FROM   DUAL
             CONNECT BY LEVEL < REGEXP_COUNT( str ,'(.*?)([[:space:]]-[[:space:]]|$)' )
           )
           AS SYS.ODCINUMBERLIST
         )
       )
 

Resultater :

| STR | OCCURRENCE | SPLIT_VALUE | |-----------------------------------|------------|--------------| | Hello world - test-test! - test | 1 | Hello world | | Hello world - test-test! - test | 2 | test-test! | | Hello world - test-test! - test | 3 | test | | Hello world2 - test2 - test-test2 | 1 | Hello world2 | | Hello world2 - test2 - test-test2 | 2 | test2 | | Hello world2 - test2 - test-test2 | 3 | test-test2 |

  1. Kan ikke finde PostgreSQL-klientbiblioteket (libpq)

  2. Forespørgsel efter MySQL's INFORMATIONSSKEMA:Hvorfor? Hvordan?

  3. PL/SQL-gateway i R11i

  4. Hvordan tilføjer man en auto-incrementing primær nøgle til en eksisterende tabel i PostgreSQL?