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.