Приветствую всех посетителей сайта Info-Comp.ru! Сегодня я покажу, как можно реализовать небольшую проверку на валидность адреса электронной почты (Email) в Microsoft SQL Server на языке T-SQL.
Когда может пригодиться такая проверка
Иногда бывает, что в базе данных могут храниться некорректные Email адреса, которые нельзя использовать в работе, например, для печати в документах, так как они просто неправильные, или для отправки на них сообщений, так как сообщения просто не отправятся и не будут доставлены.
Конечно же, проверка адреса электронной почты на валидность должна проводиться средствами клиентского приложения, а в базу данных должны попадать только корректные адреса. Но бывают случаи, что такой проверки нет или ее реализовали не сразу, а в базе уже появились некорректные адреса.
Поэтому, чтобы не допускать таких случаев можно средствами базы данных, т.е. языка T-SQL (о том, что такое T-SQL можете почитать в статье – Что такое T-SQL. Подробное описание для начинающих), реализовать проверку Email на валидность, а также для того чтобы просто принять необходимые меры по устранению некорректных Email-ов, необходимо сначала их определить. И сейчас мы рассмотрим пример реализации функции, которая делает небольшую проверку и определяет, корректен ли Email или нет. В большинстве случаев такой проверки достаточно.
Создание функции для проверки Email на валидность на T-SQL
Ниже представлен код функции, которая проверяет адрес электронной почты, хранящийся в базе данных, на корректность.
В данном конкретном случае алгоритм следующий, мы с помощью обычной инструкции LIKE и регулярных выражений проверяем наличие допустимых символов в каждой из частей Email адреса. Дополнительно мы проверяем, чтобы в адресе отсутствовали символы, из-за которых часто возникают ошибки. И если адрес подходит под данное условие, то значит он более-менее корректен, и мы возвращаем соответствующий признак. А все, что не подходит под данное условие, является невалидным.
Код функции небольшой и он прокомментирован, поэтому у тех, кто знаком с языком T-SQL, проблем возникнуть не должно, а всем остальным, кто только начинает свое знакомство с данным языком, рекомендую пройти онлайн-курс по T-SQL для начинающих, в котором я подробно специально для новичков последовательно рассказываю обо всех инструкциях языка T-SQL.
Код функции на T-SQL для проверки Email
--Проверка Email адреса CREATE FUNCTION CheckEmail ( @Email VARCHAR(100) --Адрес электронной почты ) RETURNS BIT AS BEGIN /* ***** Описание Проверка адреса электронной почты (Email) на корректность. Функция возвращает: 1 – Email корректен 0 – Email некорректен NULL – если значение Email равно NULL ***** Пример запуска SELECT dbo.CheckEmail('123email456@gmail.com') AS CheckEmail; ***** Сайт - https://info-comp.ru */ DECLARE @Result BIT; --Начинаем проверку, только если есть данные IF @Email IS NOT NULL BEGIN IF @Email LIKE '%[A-Z0-9][@][A-Z0-9]%[.][A-Z0-9]%' AND @Email NOT LIKE '%["<>'']%' SET @Result = 1; ELSE SET @Result = 0; END RETURN @Result; END
Исходные данные
Теперь, чтобы проверить работу данной функции, давайте создадим тестовые данные, они у нас будут следующие.
CREATE TABLE TestTable ( Id INT NOT NULL IDENTITY(1,1), Email VARCHAR(100) NULL ); INSERT INTO TestTable (Email) VALUES ('MyEmail123@self-learning.ru'), ('MyEmail123#yandex.ru'), ('MyEmail123@майл.ру'), ('MyEmail''123@gmail.ru'), ('<MyEmail123@info-comp.ru'); SELECT * FROM TestTable;
Как видите, в тестовых данных у нас есть некорректные Email адреса.
Заметка! Статистика в Microsoft SQL Server – что это такое и для чего она нужна.
Пример запуска функции для проверки Email
Чтобы узнать, какие адреса в нашей таблице корректные, а какие нет, мы можем написать следующий запрос с применением созданной ранее функции.
SELECT Id, Email, dbo.CheckEmail(Email) AS CheckEmail FROM TestTable;
В результате функция отработала и показала нам, какие записи содержат некорректный Email.
Заметка! Для комплексного изучения языка SQL рекомендую почитать мою книгу «SQL код», в ней язык SQL рассматривается как стандарт, чтобы после прочтения данной книги можно было работать с языком SQL в любой системе управления базами данных.
На сегодня это все, надеюсь, материал был Вам полезен, пока!