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

Numero Oracle non valido nella clausola

Una modifica alla risposta di phonetic_man che consentirà elementi NULL nell'elenco. Il formato regolare di '[^,]+' per l'analisi di elenchi delimitati non gestisce elementi di elenco NULL e restituirà un valore errato se ne esiste uno e quindi il suo utilizzo dovrebbe essere evitato. Cambia l'originale eliminando ad esempio il numero 2 e guarda i risultati. Otterrai un "3" nella posizione del 2° elemento! Ecco un modo che gestisce il NULL e restituisce il valore corretto per l'elemento:

SELECT TRIM(REGEXP_SUBSTR(str, '(.*?)(,|$)', 1, LEVEL, NULL, 1)) str
    FROM ( SELECT '1,,3,4' str FROM dual )
    connect by level <= regexp_count(str, ',') + 1;

Vedi qui per ulteriori informazioni e prove:https://stackoverflow.com/a/31464699/2543416