Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle- Split string delimitado por vírgulas (string contém espaços e vírgulas consecutivas)


Tente isso para analisar a parte da lista. Ele lida com NULOS:
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>

Infelizmente, quando você procura por regex para listas de análise, você sempre encontrará este formulário que NÃO lida com nulos e deve ser evitado:'[^,]+' . Veja aqui para mais informações:Dividir valores separados por vírgulas em colunas no Oracle.