Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/02/2010, 08:52
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Urgente to_number, cast(as number) no me funcionan

jucas1987

Lo que pasa es que puedes tener algunos registros del campo varchar que no puedan ser convertidos a numericos.

Mira este ejemplo
Código SQL:
Ver original
  1. SQL> CREATE TABLE conversion(num1 INTEGER,num2 varchar2(10));
  2.  
  3. Tabla creada.
  4.  
  5. SQL> INSERT INTO conversion VALUES(33,'033');
  6.  
  7. 1 fila creada.
  8.  
  9. SQL> SELECT *FROM conversion WHERE num1 = CAST(num2 AS NUMBER);
  10.  
  11.       NUM1 NUM2
  12. ---------- ----------
  13.         33 033
  14.  
  15. SQL> SELECT *FROM conversion WHERE num1 = to_number(num2);
  16.  
  17.       NUM1 NUM2
  18. ---------- ----------
  19.         33 033
  20.  
  21. SQL> INSERT INTO conversion VALUES(55,'055t5');
  22.  
  23. 1 fila creada.
  24.  
  25. SQL> SELECT *FROM conversion WHERE num1 = CAST(num2 AS NUMBER);
  26. ERROR:
  27. ORA-01722: numero no valido
  28.  
  29.  
  30.  
  31. ninguna fila seleccionada
  32.  
  33. SQL> SELECT *FROM conversion WHERE num1 = to_number(num2);
  34. ERROR:
  35. ORA-01722: numero no valido
  36.  
  37.  
  38.  
  39. ninguna fila seleccionada
  40.  
  41. SQL>
Fijate que el error empieza a salir cuando insertamos una t entre el numero y ya no puede ser convertido.

Debes revisar que registro(s) te interfieren en el casteo del campo. Por que las funciones de conversiòn parece que las estas utilizando bien.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming