Приветствую всех посетителей сайта 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 в любой системе управления базами данных.
На сегодня это все, надеюсь, материал был Вам полезен, пока!
