Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Validation des e-mails TSQL (sans regex)

Très de base serait :

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

Cela correspond à tout avec un @ au milieu, précédé d'au moins un caractère, suivi d'au moins deux, un point et au moins deux pour le TLD.

Vous pouvez écrire plus de LIKE des modèles qui font des choses plus spécifiques, mais vous ne pourrez jamais faire correspondre tout ce qui pourrait être une adresse e-mail sans laisser passer des choses qui ne le sont pas. Même avec des expressions régulières, vous avez du mal à le faire correctement. De plus, même la correspondance selon les lettres mêmes de la RFC correspond à des constructions d'adresse qui ne seront pas acceptées/utilisées par la plupart des systèmes de messagerie.

Faire cela au niveau de la base de données est peut-être la mauvaise approche de toute façon, donc une vérification de base comme indiqué ci-dessus peut être la meilleure que vous puissiez obtenir en termes de performances, et le faire dans une application vous offrira une bien plus grande flexibilité.