sql >> Base de Datos >  >> RDS >> Oracle

Número inválido de Oracle en la cláusula

Un cambio en la respuesta de phonetic_man que permitirá elementos NULL en la lista. El formato regex de '[^,]+' para el análisis de listas delimitadas no maneja elementos de lista NULL y devolverá un valor incorrecto si existe y, por lo tanto, se debe evitar su uso. Cambie el original eliminando el número 2, por ejemplo, y vea los resultados. ¡Obtendrás un '3' en la posición del segundo elemento! Aquí hay una forma que maneja NULL y devuelve el valor correcto para el 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;

Consulte aquí para obtener más información y pruebas:https://stackoverflow.com/a/31464699/2543416