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

T-SQL :vérification du format des e-mails

J'ai testé la requête suivante avec de nombreuses adresses e-mail erronées et valides. Cela devrait faire l'affaire.

IF (
     CHARINDEX(' ',LTRIM(RTRIM(@email_address))) = 0 
AND  LEFT(LTRIM(@email_address),1) <> '@' 
AND  RIGHT(RTRIM(@email_address),1) <> '.' 
AND  CHARINDEX('.',@email_address ,CHARINDEX('@',@email_address)) - CHARINDEX('@',@email_address ) > 1 
AND  LEN(LTRIM(RTRIM(@email_address ))) - LEN(REPLACE(LTRIM(RTRIM(@email_address)),'@','')) = 1 
AND  CHARINDEX('.',REVERSE(LTRIM(RTRIM(@email_address)))) >= 3 
AND  (CHARINDEX('[email protected]',@email_address ) = 0 AND CHARINDEX('..',@email_address ) = 0)
)
   print 'valid email address'
ELSE
   print 'not valid'

Il vérifie ces conditions :

  • Aucun espace intégré
  • '@' ne peut pas être le premier caractère d'une adresse e-mail
  • '.' ne peut pas être le dernier caractère d'une adresse e-mail
  • Il doit y avoir un '.' quelque part après '@'
  • le signe '@' est autorisé
  • Le nom de domaine doit se terminer par une extension d'au moins 2 caractères
  • ne peut pas avoir de modèles comme '[email protected]' et '..'