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.