Sehr basic wäre:
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
Dies entspricht allem mit einem @ in der Mitte, dem mindestens ein Zeichen vorangestellt ist, gefolgt von mindestens zwei, einem Punkt und mindestens zwei für die TLD.
Sie können mehr LIKE
schreiben Muster, die spezifischere Dinge tun, aber Sie werden niemals alles abgleichen können, was eine E-Mail-Adresse sein könnte, ohne Dinge durchgehen zu lassen, die keine sind. Selbst mit regulären Ausdrücken fällt es Ihnen schwer, es richtig zu machen. Darüber hinaus stimmt sogar der Abgleich nach den Buchstaben des RFC mit Adresskonstrukten überein, die von den meisten E-Mail-Systemen nicht akzeptiert/verwendet werden.
Dies auf Datenbankebene zu tun, ist vielleicht sowieso der falsche Ansatz, daher ist eine grundlegende Plausibilitätsprüfung wie oben angegeben möglicherweise das Beste, was Sie in Bezug auf die Leistung erreichen können, und wenn Sie dies in einer Anwendung tun, erhalten Sie eine weitaus größere Flexibilität.