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

update con expresiones regulares

Estas en el tema de update con expresiones regulares en el foro de Mysql en Foros del Web. Hola Tengo unos 2000 registros en los que los teléfonos están metidos en el formato 123.123.123 y quisiera pasarlos a 123123123. Es decir, quitarles los ...
  #1 (permalink)  
Antiguo 29/09/2010, 04:21
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 2 meses
Puntos: 18
update con expresiones regulares

Hola
Tengo unos 2000 registros en los que los teléfonos están metidos en el formato 123.123.123 y quisiera pasarlos a 123123123. Es decir, quitarles los puntos.

¿Existe alguna manera de hacerlo directamente con alguna sentencia SQL o voy a tener que hacerme algun script en PHP para ir de uno en uno?

Gracias!!
  #2 (permalink)  
Antiguo 29/09/2010, 05:23
 
Fecha de Ingreso: abril-2010
Mensajes: 23
Antigüedad: 14 años, 6 meses
Puntos: 3
Respuesta: update con expresiones regulares

existe,

si es mysql, será algo como:

UPDATE table SET campo=REPLACE(campo,'.','');

antes de hacer un update, siempre corrobora que sacas lo que necesitas con algo como:

SELECT REPLACE(campo,'.','') as telefono_nuevo from telefonos
  #3 (permalink)  
Antiguo 30/09/2010, 04:25
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 2 meses
Puntos: 18
Respuesta: update con expresiones regulares

Gracias. Pero así se comería todos los puntos. Se me olvidó comentar que los teléfonos están dentro de un texto. Lo que estaba buscando era alguna expresión regular que buscara "3numeros punto 3numeros punto 3numeros", ya que he encontrado la sentencia REGEXP, pero no sé cómo hacer la plantilla.

Seguiré investigando.
Gracias otra vez.
  #4 (permalink)  
Antiguo 30/09/2010, 07:24
 
Fecha de Ingreso: abril-2010
Mensajes: 23
Antigüedad: 14 años, 6 meses
Puntos: 3
Respuesta: update con expresiones regulares

Efectivamente, si tienes más puntos se los come.

con el REGEXP o RLIKE vas a tener problemas, no creo que te solucine la papeleta :(.

tratar esos temas directamente en mysql suele ser dificil, lo vas a tener mucho más comodo en aplicación.

Si tiene que ser en la query, seguro que hay formas mejores, pero se me ocurre una chapuza:

como los puntos de los telefonos van a estar entre numeros, poner algo como esto (pero si encuentra ese pattern se lo carga :( )

Código MySQL:
Ver original
  1. UPDATE table SET campo=REPLACE(campo,'1.','1');
  2. UPDATE table SET campo=REPLACE(campo,'2.','2');
  3. UPDATE table SET campo=REPLACE(campo,'3.','3');
  4. UPDATE table SET campo=REPLACE(campo,'4.','4');
  5. UPDATE table SET campo=REPLACE(campo,'5.','5');
  6. etc hasta el 0..

pero lo mejor es por aplicación, si fuera java, te hago un método en un periquete xDDDD
  #5 (permalink)  
Antiguo 30/09/2010, 12:41
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 2 meses
Puntos: 18
Respuesta: update con expresiones regulares

XD, nada tranquilo ya me lo preparo en php que no cuesta nada. Lo iba a hacer así pero, más que nada por aprender algo nuevo, hice esta pregunta.

Muchas gracias otra vez. Karmazo en toda la cara para tí.
  #6 (permalink)  
Antiguo 30/09/2010, 14:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: update con expresiones regulares

trasgukabi,
una pequeña ayuda para la base de datos:
SELECT campo FROM `tutabla` WHERE campo regexp '[0-9]{3}\.[0-9]{3}.\[0-9]{3}'

esto te encontrará los registros donde tengas 3 números, un punto, 3 números, otro punto y 3 números.
Lo demás debes hacerlo con PHP.

Etiquetas: expresiones, regulares, update
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 13:46.