Solución al ORA-01722 invalid number al realizar operaciones aritméticas en Oracle


Hola Amig@s,

Si tenemos una consulta en Oracle que realiza una operación aritmética como puede ser una multiplicación entre dos campos y al calcularlo, obtenemos el error ORA-01722, puede deberse a una incongruencia en los datos a calcular. Por ejemplo si tenemos una columna que tiene los decimales separados por comas y la otra columna por puntos. Oracle nos devolverá el error porque al intentar calcular los valores se encuentra con un separador no estándar.

Para solucionarlo, siguiendo el ejemplo de la multiplicación de los dos campos. Utilizaremos la siguiente conversión.

SUM(TO_NUMBER(NVL(NOMBRE_DEL_CAMPO,'0'),'9999D99','nls_numeric_characters=,.') * TO_NUMBER(NVL(NOMBRE_DEL_OTRO_CAMPO,'0'),'9999D99','nls_numeric_characters=,.'))


Si nos fijamos, lo que estamos haciendo es primero pasar el valor a número. Luego le estamos dando un formato. Por último le estamos indicando que los caracteres números se separan por ,..

Con esta solución, la consulta que están realizando no debería devolver ningún error.

Espeor que les resulte útil.
Salu2.
Share on Google Plus
    Blogger Comment

0 comentarios: