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

Oracle- Stringa divisa delimitata da virgole (la stringa contiene spazi e virgole consecutive)

Prova questo per l'analisi della parte dell'elenco. Gestisce NULL:

SQL> select regexp_substr('12 3,456,,abc,def', '(.*?)(,|$)', 1, level, null, 1) SPLIT, level
    from dual
    connect by level <= regexp_count('12 3,456,,abc,def',',') + 1
    ORDER BY level;

SPLIT                  LEVEL
----------------- ----------
12 3                       1
456                        2
                           3
abc                        4
def                        5

SQL>

Sfortunatamente quando cerchi espressioni regolari per l'analisi degli elenchi, troverai sempre questo modulo che NON gestisce i null e dovrebbe essere evitato:'[^,]+' . Per ulteriori informazioni, vedere qui:Dividi i valori separati da virgole in colonne in Oracle.