Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

T-SQL:verifica del formato e-mail

Ho testato la seguente query con molti indirizzi email errati e validi. Dovrebbe fare il lavoro.

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'

Verifica queste condizioni:

  • Nessun spazio incorporato
  • '@' non può essere il primo carattere di un indirizzo email
  • '.' non può essere l'ultimo carattere di un indirizzo email
  • Deve esserci un '.' da qualche parte dopo '@'
  • è consentito il segno '@'
  • Il nome di dominio deve terminare con un'estensione di almeno 2 caratteri
  • non può avere pattern come '[email protected]' e '..'