Error ORA-01722 de Oracle
Cuando estás haciendo pruebas de base de datos y Oracle te devuelve el error ORA-01722, empiezas a sudar.
1 2 3 4 |
ORA-01722: número no válido 01722. 00000 - "invalid number" *Cause: The specified number was invalid. *Action: Specify a valid number. |
Dicho error es bastante genérico y puede deberse a cosas bastante dispares. Oracle no da mucha más información en su web.
En mi caso se debía a que los datos de prueba tenían texto o caracteres no numéricos en un campo que estaba intentando convertir a numérico. Además asociado a un TRIM(). Descubrí que la función TO_NUMBER() funciona de la siguiente manera en lo que respecta al tipo de valor de entrada.
1 2 3 4 5 |
SELECT TRIM (TO_CHAR (NULL, '0000')) FROM DUAL; -- NULL SELECT TRIM (TO_CHAR ('', '0000')) FROM DUAL; -- NULL SELECT TRIM (TO_CHAR ('1', '0000')) FROM DUAL; -- 0001 SELECT TRIM (TO_CHAR ('null', '0000')) FROM DUAL; --- Devuelve el error ORA-01722 SELECT TRIM (TO_CHAR (' ', '0000')) FROM DUAL; --- Devuelve el error ORA-01722 |
Expresiones regulares para encontrar caracteres no numéricos en Oracle
Continuar leyendo «Encontrar un campo con texto mediante expresiones regulares en Oracle»