Muy básica sería:
SELECT
EmailAddress,
CASE WHEN EmailAddress LIKE '%[email protected]_%_.__%'
AND EmailAddress NOT LIKE '%[any obviously invalid characters]%'
THEN 'Could be'
ELSE 'Nope'
END Validates
FROM
Table
Esto coincide con todo con un @ en el medio, precedido por al menos un carácter, seguido por al menos dos, un punto y, al menos, dos para el TLD .
Puede escribir más patrones LIKE
que hacen cosas más específicas, pero nunca podrá hacer coincidir todo lo que podría ser una dirección de correo electrónico sin dejar escapar las cosas que no lo son. Incluso con expresiones regulares, es difícil hacerlo bien. Además, incluso el emparejamiento de acuerdo con las mismas letras del RFC coincide con los constructos de direcciones que no serán aceptados/usados por la mayoría de los sistemas de envío de correos electrónicos.
Hacer esto en el nivel de base de datos es tal vez el enfoque incorrecto, por lo que un control de cordura básico como se indicó anteriormente puede ser lo mejor que se puede obtener en cuanto a rendimiento, y hacerlo en una aplicación le proporcionará mucha más flexibilidad.
posible duplicado de [secuencia de comandos SQL para encontrar direcciones de correo electrónico no válidas] (http://stackoverflow.com/questions/801166/sql-script- to-find-invalid-email-addresses) – Neolisk