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

Número inválido do Oracle na cláusula


Uma mudança na resposta de phonetic_man que permitirá elementos NULL na lista. O formato regex de '[^,]+' para analisar listas delimitadas não lida com elementos de lista NULL e retornará um valor incorreto se existir e, portanto, seu uso deve ser evitado. Altere o original excluindo o número 2, por exemplo, e veja os resultados. Você obterá um '3' na posição do 2º elemento! Aqui está uma maneira que lida com o NULL e retorna o valor correto para o 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;

Veja aqui mais informações e provas:https://stackoverflow.com/a/31464699/2543416