Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

T-SQL:Prüfung auf E-Mail-Format

Ich habe die folgende Abfrage mit vielen verschiedenen falschen und gültigen E-Mail-Adressen getestet. Es sollte den Job machen.

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'

Es prüft diese Bedingungen:

  • Keine eingebetteten Leerzeichen
  • '@' darf nicht das erste Zeichen einer E-Mail-Adresse sein
  • '.' darf nicht das letzte Zeichen einer E-Mail-Adresse sein
  • Es muss ein '.' irgendwo nach '@'
  • das '@'-Zeichen ist erlaubt
  • Domainname sollte mit einer mindestens 2-stelligen Erweiterung enden
  • darf keine Muster wie '[email protected]' und '..' haben