Bardzo podstawowe byłoby:
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
To dopasowuje wszystko z @ w środku, poprzedzonym co najmniej jednym znakiem, po którym następują co najmniej dwa, kropka i co najmniej dwa dla TLD.
Możesz pisać więcej LIKE
wzorce, które robią bardziej konkretne rzeczy, ale nigdy nie będziesz w stanie dopasować wszystkiego, co może być adresem e-mail, nie przepuszczając jednocześnie rzeczy, które nie są. Nawet w przypadku wyrażeń regularnych trudno jest zrobić to dobrze. Dodatkowo, nawet dopasowanie według samych liter RFC dopasowuje konstrukcje adresów, które nie będą akceptowane/używane przez większość systemów pocztowych.
Wykonanie tego na poziomie bazy danych i tak może być złym podejściem, więc podstawowe sprawdzenie poprawności, jak wskazano powyżej, może być najlepszym, jaki możesz uzyskać pod względem wydajności, a wykonanie tego w aplikacji zapewni znacznie większą elastyczność.