Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle - Chaîne fractionnée délimitée par des virgules (la chaîne contient des espaces et des virgules consécutives)

Essayez ceci pour l'analyse de la partie liste. Il gère les 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>

Malheureusement, lorsque vous recherchez des regex pour les listes d'analyse, vous trouverez toujours cette forme qui ne gère PAS les valeurs nulles et doit être évitée :'[^,]+' . Voir ici pour plus d'informations :Divisez les valeurs séparées par des virgules en colonnes dans Oracle.