válido valido validate validar validacion unico tiene para formato existe electrónico electronico dirección correo como mysql sql validation view

mysql - valido - validar correo php



Validar direcciones de correo electrónico en mysql (5)

Para la validación correcta del correo electrónico, puede utilizar esta expresión regular como a continuación:

SELECT * FROM `school` WHERE `email` NOT REGEXP ''^[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9._-]@[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9]//.[a-zA-Z]{2,63}$'';

Esta consulta crea una vista mysql que captura formatos de dirección de correo electrónico incorrectos en una tabla. Por lo tanto, si se inserta una fila que tiene rtrrg.com como correo electrónico, se registrará en la vista. Mi pregunta es, ¿cómo puedo hacer que la vista siga más de una tabla? Una segunda mesa.

El SQL

CREATE VIEW `invalid_emails` AS select `table_with_email_column`.`email` AS `invalidemail` from `table_with_email_column` where ((locate(_latin1'''', ltrim(rtrim(`table_with_email_column`.`email`))) <> 0) or (left(ltrim(`table_with_email_column`.`email`), 1) = _latin1''@'') or (right(rtrim(`table_with_email_column`.`email`), 1) = _latin1''.'') or ((locate(_latin1''.'', `table_with_email_column`.`email`,locate(_latin1''@'', `table_with_email_column`.`email`)) - locate(_latin1''@'', `table_with_email_column`.`email`)) <= 1) or ((length(ltrim(rtrim(`table_with_email_column`.`email`))) - length(replace(ltrim(rtrim(`table_with_email_column`.`email`)), _latin1''@'', _latin1''''))) <> 1) or (locate(_latin1''.'', reverse(ltrim(rtrim(`table_with_email_column`.`email`)))) < 3) or (locate(_latin1''.@'', `table_with_email_column`.`email`) <> 0) or (locate(_latin1''..'', `table_with_email_column`.`email`) <> 0));


Puede usar un UNION en la VIEW pero luego tiene que repetir toda la declaración WHERE que le da un código redundante. Por lo tanto, sería un VIEW ayuda que lo convierte en UNION y luego aplica la cláusula WHERE .

Demo aquí: SQL Fiddle Demo .

Eso se aplicaría a su SQL de alguna manera como esto (no probado);

CREATE VIEW `invalid_emails_helper` AS select `table_with_email_column`.`email` AS `invalidemail` from `table_with_email_column` union select `table_with_email_column`.`email` from `second_table_with_email_column` CREATE VIEW `invalid_emails` AS select `invalidemail` as `email` from `invalid_emails_helper` as `table_with_email_column` where ((locate(_latin1'''', ltrim(rtrim(`table_with_email_column`.`email`))) <> 0) or (left(ltrim(`table_with_email_column`.`email`), 1) = _latin1''@'') or (right(rtrim(`table_with_email_column`.`email`), 1) = _latin1''.'') or ((locate(_latin1''.'', `table_with_email_column`.`email`,locate(_latin1''@'', `table_with_email_column`.`email`)) - locate(_latin1''@'', `table_with_email_column`.`email`)) <= 1) or ((length(ltrim(rtrim(`table_with_email_column`.`email`))) - length(replace(ltrim(rtrim(`table_with_email_column`.`email`)), _latin1''@'', _latin1''''))) <> 1) or (locate(_latin1''.'', reverse(ltrim(rtrim(`table_with_email_column`.`email`)))) < 3) or (locate(_latin1''.@'', `table_with_email_column`.`email`) <> 0) or (locate(_latin1''..'', `table_with_email_column`.`email`) <> 0));

Y sí, la consulta para verificar la dirección de correo electrónico mediante una regex que se puede encontrar fácilmente en cualquier parte de Internet lo simplifica aún más.


Puede utilizar un SELECT puro para validar las direcciones de correo electrónico:

SELECT * FROM `users` WHERE `email` NOT REGEXP ''^[^@]+@[^@]+/.[^@]{2,}$'';

Y ahora, para su pregunta sobre el seguimiento de varias tablas, puede usar nombres de tablas separados por comas, ¿no?

SELECT * FROM `users`, `customers`, `clients` WHERE `email` NOT REGEXP ''^[A-Z0-9._%-]+@[A-Z0-9.-]+/.[A-Z]{2,63}$'';


Una simple instrucción SELECT es suficiente, por ejemplo:

SELECT * FROM user WHERE email NOT REGEXP ''^[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}$''

Esta consulta maneja las direcciones de Gmail con el signo + y las direcciones donde el host es una sola letra.


SELECT * FROM users WHERE email NOT REGEXP ‘ ^[ a - zA - Z0 - 9 ][ a - zA - Z0 - 9._ -]*[ a - zA - Z0 - 9 ]@[ a - zA - Z0 - 9 ][ a - zA - Z0 - 9._ -]*[ a - zA - Z0 - 9 ]/.[ a - zA - Z ]{ 2, 63 } $’