Много основното би било:
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
Това съответства на всичко с @ в средата, предшестван от поне един знак, последван от поне два, точка и поне два за TLD.
Можете да напишете още LIKE
модели, които правят по-конкретни неща, но никога няма да можете да съпоставите всичко, което може да бъде имейл адрес, като същевременно не позволявате да се промъкнете през неща, които не са. Дори с регулярни изрази ви е трудно да го направите правилно. Освен това, дори съвпадението според самите букви на RFC съвпада с адресни конструкции, които няма да бъдат приети/използвани от повечето системи за електронна поща.
Правенето на това на ниво база данни може би така или иначе е грешен подход, така че основната проверка на здравия разум, както е посочено по-горе, може да е най-доброто, което можете да получите по отношение на производителността, а правенето му в приложение ще ви осигури много по-голяма гъвкавост.