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

Eliminar entradas con mal formato

Estas en el tema de Eliminar entradas con mal formato en el foro de Mysql en Foros del Web. Hola, me dieron una base de datos para que arregle. La misma tiene unos miles de emails, pero algunos estan mal, es decir con un ...
  #1 (permalink)  
Antiguo 17/05/2011, 07:37
 
Fecha de Ingreso: diciembre-2009
Mensajes: 20
Antigüedad: 14 años, 4 meses
Puntos: 1
Eliminar entradas con mal formato

Hola, me dieron una base de datos para que arregle. La misma tiene unos miles de emails, pero algunos estan mal, es decir con un formato erroneo (EJ: a@a o [email protected]), mi idea es que solo queden los que tienen el formato [email protected]

Alguna forma de hacerlo en MySQL sin tener que escribir un script en php?

Espero que se entienda.

Saludos y desde ya gracias!.

Mati.
  #2 (permalink)  
Antiguo 17/05/2011, 08:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Eliminar entradas con mal formato

Cita:
Alguna forma de hacerlo en MySQL sin tener que escribir un script en php?
...En realidad un script de PHP es muuuucho más simple de hacer que la misma función en MySQL...
Directamente tienes ejemplos del manual de referencia de PHP::Filtros::Ejemplos::Validaciones
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/05/2011, 09:05
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Eliminar entradas con mal formato

Hola MaTy09:

Si quieres hacerlo desde mysql, podrías utilizar expresiones regulares (REGEXP) para encontrar aquellos correos que no cumplan con el patrón que estás definiendo, algo como esto:

Código:
REGEXP "^[a-zA-Z][a-zA-Z0-9.\-]*[a-zA-Z0-9.\-]@[a-zA-Z0-9][a-zA-Z0-9._\-]*[a-zA-Z0-9].[a-zA-Z]{2,4}$
"
Código MySQL:
Ver original
  1. mysql> create table correos (id int, correo varchar(100));
  2. Query OK, 0 rows affected (0.09 sec)
  3.  
  4. mysql> insert into correos values (1, '[email protected]'),
  5.     -> (2, '[email protected]'),
  6.     -> (3, 'juan_[email protected]'),
  7.     -> (4, '5asdasd@asdasdasd'),
  8.     -> (5, 'juan.hernandez@[email protected]');
  9. Query OK, 5 rows affected (0.03 sec)
  10. Records: 5  Duplicates: 0  Warnings: 0
  11.  
  12. mysql> select * from correos;
  13. +------+------------------------------+
  14. | id   | correo                       |
  15. +------+------------------------------+
  16. |    1 | [email protected]               |
  17. |    2 | [email protected] |
  18. |    3 | [email protected]    |
  19. |    4 | 5asdasd@asdasdasd            |
  20. |    5 | juan.hernandez@[email protected] |
  21. +------+------------------------------+
  22. 5 rows in set (0.00 sec)
  23.  
  24. mysql> update correos set correo = null where correo not regexp
  25.     -> "^[a-zA-Z][a-zA-Z0-9.\-]*[a-zA-Z0-9.\-]@[a-zA-Z0-9][a-zA-Z0-9._\-]*[a-zA-
  26. Z0-9].[a-zA-Z]{2,4}$";
  27. Query OK, 3 rows affected (0.09 sec)
  28. Rows matched: 3  Changed: 3  Warnings: 0
  29.  
  30. mysql> select * from correos;
  31. +------+------------------------------+
  32. | id   | correo                       |
  33. +------+------------------------------+
  34. |    1 | [email protected]               |
  35. |    2 | [email protected] |
  36. |    3 | NULL                         |
  37. |    4 | NULL                         |
  38. |    5 | NULL                         |
  39. +------+------------------------------+
  40. 5 rows in set (0.00 sec)


el correo 3 no es válido porque contiene un (_), el correo 4 no es válido porque comienza con un número y el correo 5 no es válido porque contiene dos (@). Aquí sería cuestión de que generes un patrón que cumpla con todos los criterios que puedas considerar, este es sólo un ejemplo de lo que puedes hacer. tu expresión puede ser tan simple o tan complicada como quieras.

Saludos.
Leo.

Etiquetas: entradas, formato
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 22:41.