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

Corregir numeros de telefono con sql

Estas en el tema de Corregir numeros de telefono con sql en el foro de SQL Server en Foros del Web. Gente les comento, tengo un problema, una tabla que tiene numeros de telefonos, el campo telefono, y telefonocelular, y el id de la persona. Tengo ...
  #1 (permalink)  
Antiguo 23/03/2007, 14:51
Avatar de pmuruaga  
Fecha de Ingreso: diciembre-2005
Mensajes: 127
Antigüedad: 18 años, 4 meses
Puntos: 0
Busqueda Corregir numeros de telefono con sql

Gente les comento, tengo un problema, una tabla que tiene numeros de telefonos, el campo telefono, y telefonocelular, y el id de la persona. Tengo que corregir los numeros de telefono, decidi arrancar con los celulares. El tema es que las cosas que hay son de todo tipo:
En arg. celulares validos serian:
capital
011-15-68311562
15-68311562
capital de prov.
0351-15-3222222
153006331
interior
03854-15-500534
15-553534
Mi idea para corregir fue primero pasarlos a todos a numero, porque tenes quienes escriben 15/232323 o 15_232323 o como se les canta, primer problema, anide unos replace que quedaron medio feo con los simbolos que fui descubriendo, pero no son todos. No encontre forma de poner alguna especie de comodin, que solo me deje numeros.
Y el script me quedo algo asi.

Código:
SELECT *, REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.telefonocelular,'*',''),'/',''),'-',''),'.',''),' ',''),'+','') AS SINSIGNOS
into #sinsignos
from telefonos2 t

SELECT *
FROM #SINSIGNOS T
WHERE 
/*Solo celular-Interior*/
((LEN(T.SINSIGNOS)=8 AND substring(T.SINSIGNOS,1,2) = '15') OR

/*Solo celular-Capital Provincia*/
(LEN(T.SINSIGNOS)=9 AND substring(T.SINSIGNOS,1,2) = '15') OR

/*Solo celular capital federal*/
(LEN(T.SINSIGNOS)=10 AND substring(T.SINSIGNOS,1,2) = '15')OR

/*de capital con caracteristica*/
(LEN(T.SINSIGNOS)=13 AND substring(T.SINSIGNOS,1,2) = '01') AND (substring(T.SINSIGNOS,5,2) = '15' OR substring(T.SINSIGNOS,4,2) = '15')OR

/*DEL SUR con caracteristica*/
(LEN(T.SINSIGNOS)=13 AND substring(T.SINSIGNOS,1,2) = '02') AND 
(substring(T.SINSIGNOS,6,2) = '15' OR substring(T.SINSIGNOS,5,2) = '15') OR

/* DEL NORTE con caracteristica*/
(LEN(T.SINSIGNOS)=13 AND substring(T.SINSIGNOS,1,2) = '03') AND (substring(T.SINSIGNOS,6,2) = '15' OR substring(T.SINSIGNOS,5,2) = '15'))

/*Elimino la tabla temporal*/
DROP table #sinsignos
Pero me surge un problema, hay algunos datos que por ejemplo el numero esta escrito asi: 15684844g, o si se me presentase un caso 156f65641,estoy encarando bien?, que me sugieren?, no hay alguna forma de usar el replace para que me saque todo lo que no sea numero por ejemplo.
La idea es luego a los que tienen caracteristica volver a armarlos de manera correcta.
Pero primero quiero resolver esto. Muchas gracias y espero haber sido comprendido y que me puedan dar una manito.
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:03.