Очень Basic будет:
SELECT
EmailAddress,
CASE WHEN EmailAddress LIKE '%_@_%_.__%'
AND EmailAddress NOT LIKE '%[any obviously invalid characters]%'
THEN 'Could be'
ELSE 'Nope'
END Validates
FROM
Table
Это соответствует всему с @ в середине, перед которым стоит как минимум один символ, за которым следуют как минимум два, точка и как минимум два для TLD.
Вы можете написать больше LIKE
шаблонов, которые делают более конкретные вещи, но вы никогда не сможете сопоставить все, что может быть адресом электронной почты, не пропуская вещи, которые не являются таковыми. Даже с регулярными выражениями вам трудно все сделать правильно. Кроме того, даже сопоставление согласно буквам RFC соответствует адресным конструкциям, которые не будут приняты / использованы большинством систем электронной почты.
Выполнение этого на уровне базы данных в любом случае, возможно, является неправильным подходом, поэтому базовая проверка работоспособности, как указано выше, может быть наилучшей, которую вы можете получить с точки зрения производительности, и выполнение этого в приложении предоставит вам гораздо большую гибкость. 1011 *