sql >> Databasteknik >  >> RDS >> Sqlserver

T-SQL:söker efter e-postformat

Jag testade följande fråga med många olika felaktiga och giltiga e-postadresser. Det borde göra jobbet.

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'

Den kontrollerar dessa villkor:

  • Inga inbäddade utrymmen
  • '@' kan inte vara det första tecknet i en e-postadress
  • '.' kan inte vara det sista tecknet i en e-postadress
  • Det måste finnas ett '.' någonstans efter '@'
  • tecknet '@' är tillåtet
  • Domännamn ska sluta med minst två teckens tillägg
  • kan inte ha mönster som '[email protected]' och '..'


  1. Tuning:Ett bra ställe att börja

  2. Generera en uppsättning eller sekvens utan loopar – del 3

  3. Onlinemigrering från MySQL 5.6 Non-GTID till MySQL 5.7 med GTID

  4. MySQL returnerar endast en rad