sql >> Base de Datos >  >> RDS >> Sqlserver

Validación de correo electrónico TSQL (sin expresiones regulares)

Muy básico 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 lo que tenga una @ en el medio, precedido por al menos un carácter, seguido por al menos dos, un punto y al menos dos para el TLD.

Puedes escribir más LIKE patrones 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 pasar cosas que no lo son. Incluso con expresiones regulares, tiene dificultades para hacerlo bien. Además, incluso la coincidencia de acuerdo con las mismas letras del RFC coincide con construcciones de direcciones que no serán aceptadas/utilizadas por la mayoría de los sistemas de correo electrónico.

Hacer esto en el nivel de la base de datos es quizás el enfoque incorrecto de todos modos, por lo que una verificación de cordura básica como se indicó anteriormente puede ser lo mejor que puede obtener en cuanto al rendimiento, y hacerlo en una aplicación le proporcionará una flexibilidad mucho mayor.