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

optimizar update

Estas en el tema de optimizar update en el foro de Oracle en Foros del Web. Hola. mira tengo un proceso que lee desde otra tabla con ciertas condiciones, el problema es que los telefonos vienen con letras. como puedo optimizar ...
  #1 (permalink)  
Antiguo 12/05/2006, 12:23
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
optimizar update

Hola. mira tengo un proceso que lee desde otra tabla con ciertas condiciones, el problema es que los telefonos vienen con letras. como puedo optimizar esta consulta?

Código HTML:
 UPDATE  COBRANZA_FINAL 
    SET   fono ='' 
    WHERE fono LIKE '+3%' OR fono LIKE '000%' OR fono LIKE '111%'
       OR fono LIKE '2'   OR fono LIKE '%a%'  OR fono LIKE '%b%' 
       OR fono LIKE '%h%' OR fono LIKE '%c%'  OR fono LIKE '%d%' 
       OR fono LIKE '%e%' OR fono LIKE '%f%'  OR fono LIKE '%g%' 
       OR fono LIKE '%h%' OR fono LIKE '%i%'  OR fono LIKE '%j%'  
       OR fono LIKE '%k%' OR fono LIKE '%l%'  OR fono LIKE '%m%'
       OR fono LIKE '%ñ%' OR fono LIKE '%o%'  OR fono LIKE '%p%' 
       OR fono LIKE '%q%' OR fono LIKE '%r%'  OR fono LIKE '%s%' 
       OR fono LIKE '%t%' OR fono LIKE '%u%'  OR fono LIKE '%v%' 
       OR fono LIKE '%w%' OR fono LIKE '%x%'  OR fono LIKE '%y%'  
       OR fono LIKE '%z%' OR fono LIKE '%A%'  OR fono LIKE '%B%'  
       OR fono LIKE '%C%' OR fono LIKE '%D%'  OR fono LIKE '%E%'
       OR fono LIKE '%F%' OR fono LIKE '%G%'  OR fono LIKE '%H%' 
       OR fono LIKE '%I%' OR fono LIKE '%J%'  OR fono LIKE '%K%' 
       OR fono LIKE '%L%' OR fono LIKE '%M%'  OR fono LIKE '%Ñ%' 
       OR fono LIKE '%O%' OR fono LIKE '%P%'  OR fono LIKE '%Q%'  
       OR fono LIKE '%R%' OR fono LIKE '%S%'  OR fono LIKE '%T%'
       OR fono LIKE '%U%' OR fono LIKE '%V%'  OR fono LIKE '%w%'
       OR fono LIKE '%X%' OR fono LIKE '%Y%'  OR fono LIKE '%Z%';
Muchas Gracias
__________________
Dios es mas grande que tu problema :-)
  #2 (permalink)  
Antiguo 15/05/2006, 09:33
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
Lo que pretendo es eliminar los telefonos que tengan letras. imagina algo asi:
(56-2) 694a3511
Atte
Mauricio
__________________
Dios es mas grande que tu problema :-)
  #3 (permalink)  
Antiguo 15/05/2006, 09:46
 
Fecha de Ingreso: noviembre-2005
Mensajes: 117
Antigüedad: 19 años
Puntos: 0
Tenes que usar expresiones regulares en vez del LIKE

WHERE fono REGEXP '^[.]*[a-z]+[.]*$'

esa para letras minusculas y [A-Z] para mayusculas, no me acuerdo como era para meter todo junto sino proba con

WHERE fono REGEXP '^[.]*{[a-z],[A-Z]}+[.]*$'
  #4 (permalink)  
Antiguo 16/05/2006, 14:04
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
Amigo, me olvide de comentarte que es en Oracle
Atte
Mauricio
__________________
Dios es mas grande que tu problema :-)
  #5 (permalink)  
Antiguo 16/05/2006, 14:11
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 11 meses
Puntos: 11
que formato debe poseer los numeros telefonicos? lleva guiones? parentesis o algo similar?

si solo lleva numero podrias tratar con algo similar

Upade COBRANZA_FINAL
SET fono = ''
Where To_number(fono) > 0;
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #6 (permalink)  
Antiguo 16/05/2006, 14:30
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
la idea en principio es quitar la basura, es decir las letras.
mira:
http://www.oracle.com/technology/ora...egexp_pt1.html

ahi aparece:
SELECT zip
FROM zipcode
WHERE REGEXP_LIKE(zip, '[^[:digit:]]')


la idea es hacer algo mas óptimo. Pero este ejemplo es 10g... y aqui solo hay 9i
Muchas gracias
Atte
Mauricio
__________________
Dios es mas grande que tu problema :-)

Última edición por maurimono; 16/05/2006 a las 14:54
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 18:10.