Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Eliminar registros no numericos

Estas en el tema de Eliminar registros no numericos en el foro de Oracle en Foros del Web. Hola El problema que tengo es el siguiente.. tengo una tabla con un campo alfanumérico, y dicho campo necesito compararlo con otro campo que es ...
  #1 (permalink)  
Antiguo 02/01/2008, 16:41
 
Fecha de Ingreso: enero-2004
Mensajes: 52
Antigüedad: 20 años, 2 meses
Puntos: 0
Eliminar registros no numericos

Hola

El problema que tengo es el siguiente.. tengo una tabla con un campo alfanumérico, y dicho campo necesito compararlo con otro campo que es totalmente numérico. Esto sería bastante fácil con un to_number o un to_char. El problema es que hay registros alphanumericos en la tabla origen... o sea, algo así como '44324A12'. Lo que necesito es eliminar o bien, identificar este tipo de registros y eliminarlos o bien realizarles un tratamiento distinto.

Desde ya, muchas gracias


Ah... otra cosa, es posible q dentro de esos mismos caracteres vengan otros, como el ~, $, # u otros
__________________
I can see the bodies on the wall... all the nightmare dreams i can't recall come...

Última edición por FaiTCRaH; 02/01/2008 a las 16:49
  #2 (permalink)  
Antiguo 02/01/2008, 17:52
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Re: Eliminar registros no numericos

Hola,

Este problema ha sido motivo de varios post en varios foros, y todos han llegado mas o menos a la misma conclusion, hay que wrapear la funcion TO_NUMBER dentro de una funcion desarrollada por nosotros, el problema es siempre el mismo, la funcion TO_NUMBER no maneja excepciones.

Código:
CREATE OR REPLACE FUNCTION my_to_number( arg IN VARCHAR2 )
  RETURN INTEGER
IS
  var NUMBER;
  not_a_number EXCEPTION;
  PRAGMA EXCEPTION_INIT( not_a_number, -6502 );
BEGIN
  var := to_number( arg );
  RETURN var;
EXCEPTION
  WHEN not_a_number THEN
    RETURN null;
END;
De esta manera podremos hacer consultas como la siguiente en forma segura.

Código:
SELECT *
  FROM testtable
 WHERE code = 'H'
   AND my_to_numeric( value ) > 1000
Fuente: http://www.ddbcinc.com/askDDBC/topic.asp?TOPIC_ID=722

Saludos
  #3 (permalink)  
Antiguo 03/01/2008, 16:21
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años
Puntos: 7
Re: Eliminar registros no numericos

o tambien identificas si es numerico o no, aqui hablo como hacerlo

http://www.blogzote.com/2007/01/15/i...ric-en-oracle/
__________________
Blogzote.com :-) Mi blog
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:09.