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

Convalida e-mail TSQL (senza regex)

Molto di base sarebbe:

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

Questo corrisponde a tutto con una @ al centro, preceduta da almeno un carattere, seguito da almeno due, un punto e almeno due per il TLD.

Puoi scrivere più LIKE schemi che fanno cose più specifiche, ma non sarai mai in grado di abbinare tutto ciò che potrebbe essere un indirizzo e-mail senza lasciarti sfuggire cose che non lo sono. Anche con le espressioni regolari hai difficoltà a farlo bene. Inoltre, anche la corrispondenza in base alle lettere stesse della RFC corrisponde a costrutti di indirizzi che non saranno accettati/utilizzati dalla maggior parte dei sistemi di posta elettronica.

Fare questo a livello di database è forse l'approccio sbagliato comunque, quindi un controllo di integrità di base come indicato sopra potrebbe essere il migliore che puoi ottenere in termini di prestazioni e farlo in un'applicazione ti fornirà una flessibilità molto maggiore.