REGEX per selezionare l’ennesimo valore da un elenco, consentendo null

Sto usando REGEXP_SUBSTR() per restituire l’ennesimo valore da un elenco separato da virgole. Funziona bene quando tutti i valori sono presenti, ma fallisce se un elemento è nullo. Ecco un esempio che funziona dove sono presenti tutti i valori e sto selezionando la seconda occorrenza di 1 o più caratteri che non sono una virgola:

 SQL> select REGEXP_SUBSTR('1,2,3,4,5,6', '[^,]+', 1, 2) data 2 from dual; D - 2 

Ma quando il secondo valore è nullo, sto davvero ricevendo il terzo elemento nell’elenco, che ovviamente è la seconda occorrenza di 1 o più caratteri che non sono una virgola. Tuttavia, ho bisogno di restituire NULL in quanto il 2 ° elemento è vuoto:

 SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,]+', 1, 2) data 2 from dual; D - 3 

Se cambio la regex per consentire zero o più caratteri invece di 1 o più, fallisce anche per i numeri dopo il null:

 SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,]*', 1, 4) data 2 from dual; D - 3 

Devo consentire il null ma non riesco a ottenere la syntax giusta. Logicamente ho bisogno di restituire ciò che precede l’ennesima occorrenza di una virgola se i dati sono presenti o meno (e anche per consentire l’ultimo valore). Qualche idea?