Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/02/2010, 12:42
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

Puede estar pasando que en el campo varchar tengas numeros con decimal y la configuraciòn regional de oracle no detecte un punto o una coma en el lugar correcto.

Por ejemplo..

3.200 podrìa ser 3.2 0 3200. o caso inverso.

mira este ejemplo
Código SQL:
Ver original
  1. SQL> SELECT *FROM conversion;
  2.  
  3.       NUM1 NUM2
  4. ---------- ----------
  5.         33 033
  6.       1712 1712.000
  7. SQL>  SELECT *FROM conversion WHERE num1 = CAST(num2 AS NUMBER);
  8. ERROR:
  9. ORA-01722: numero no valido

Pero si cambiamos el punto por la coma funciona.
Código SQL:
Ver original
  1. SQL>  SELECT *FROM conversion WHERE num1 = CAST(REPLACE(num2,'.',',') AS NUMBER);
  2.  
  3.       NUM1 NUM2
  4. ---------- ----------
  5.         33 033
  6.       1712 1712.000

Esto se da, por que el punto (.) juega el papel de separador de miles y no separador decimal. si fuese separador de miles, esto nunca podrìa convertirse a numero, en cambio con la coma si se podrìa.

Si en tu configuración regional es al revés, debes invertir en el replace la coma y el punto.

saludos y espero soluciones el problema
__________________
Without data, You are another person with an opinion.
W. Edwads Deming