mercoledì 13 maggio 2020

RDBMS ORACLE - SPLIT TEXT with REGEXP

Di seguito un semplice esempio per effettuare lo split di una string utilizzando una regexp.
Supponiamo di avere la seguente stringa:

'COSENZA,MILANO,ROMA,TORINO,NAPOLI'

quello che vogliamo ottenere è una lista :

COSENZA
MILANO
ROMA
TORINO
NAPOLI

Per ottenere questo basta effettuare la seguente query:

SELECT
    regexp_substr('COSENZA,MILANO,ROMA,TORINO,NAPOLI', '[^,]+', 1, level)
FROM
    dual
CONNECT BY
    regexp_substr('COSENZA,MILANO,ROMA,TORINO,NAPOLI', '[^,]+', 1, level) IS NOT NULL;


Il risultato ottenuto sarà il seguente:

REGEXP_SUBSTR('COSENZA,MILANO,ROM
---------------------------------
COSENZA
MILANO
ROMA
TORINO
NAPOLI


Se lo si vuole usare come input in una IN basta riscrivere la query nel seguente modo:

SELECT * FROM CITTA WHERE NAME IN
 (SELECT    regexp_substr('COSENZA,MILANO,ROMA,TORINO,NAPOLI', '[^,]+', 1, level)
    FROM    dual
    CONNECT BY regexp_substr('COSENZA,MILANO,ROMA,TORINO,NAPOLI', '[^,]+', 1, level) IS NOT NULL);

   
 








Nessun commento:

Posta un commento