Это было бы лучше сделать на языке программирования, который поддерживает регулярные выражения или уже имеет встроенный метод isValidEmail
.
Проверка адреса электронной почты с использованием регулярного выражения или простого шаблона like
чертовски трудно понять, если не почти невозможно.
Подробнее об этом можно прочитать на Я знал, как проверять адрес электронной почты, пока не прочитал RFC - И процитировать ту часть, которая, по моему мнению, лучше всего иллюстрирует проблему:
Это все действительные адреса электронной почты!
- Abc @ def @ example.com
- Fred \ Bloggs@example.com
- Джо. \ Blow@example.com
- "Abc @ DEF" @ example.com
- "Фред Блоггс" @ example.com
- customer/department=shipping@example.com
- $A12345@example.com
- !def!xyz%abc@example.com
- _somename@example.com
Попытка получить всю логику, необходимую для проверки такого широкого диапазона возможностей в инструкции T-SQL, - это все равно, что пытаться подняться на Эверест с завязанными глазами, с руками, связанными за спиной.
У вас может быть простая проверка, которая может вернуть много ложных срабатываний или ложных отрицаний, используя простой шаблон like
, подобный предложенному в Как проверить адрес электронной почты в SQL Server? с помощью Пиналь Дэйв: '%_@__%.__%'
, но это на самом деле просто наивная попытка забить плотину лейкопластырем.
Сказав все это, вы, возможно, сможете использовать Скалярную функцию CLR для проверки ваших адресов электронной почты, используя код, подобный коду этого сообщения SO .
Лично у меня нет опыта работы с функциями CLR, поэтому я, вероятно, безответственно попытался бы написать вам пример кода (особенно, поскольку у меня нет тестовой среды, чтобы проверить его перед тем, как опубликовать этот ответ) , но я надеюсь, что то, что я написал до сих пор, было достаточно полезным, и с помощью ссылок в этом ответе и некоторых поисковых запросов в Интернете вы сможете решить эту проблему.