Проверка Email на валидность в Microsoft SQL Server на T-SQL

Приветствую всех посетителей сайта Info-Comp.ru! Сегодня я покажу, как можно реализовать небольшую проверку на валидность адреса электронной почты (Email) в Microsoft SQL Server на языке T-SQL.

Проверка 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

Скриншот 1

Заметка! Для чего нужны пользовательские функции в T-SQL.

Исходные данные

Теперь, чтобы проверить работу данной функции, давайте создадим тестовые данные, они у нас будут следующие.

   
   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;

Скриншот 2

Как видите, в тестовых данных у нас есть некорректные Email адреса.

Заметка! Статистика в Microsoft SQL Server – что это такое и для чего она нужна.

Пример запуска функции для проверки Email

Чтобы узнать, какие адреса в нашей таблице корректные, а какие нет, мы можем написать следующий запрос с применением созданной ранее функции.

   
   SELECT Id, Email, dbo.CheckEmail(Email) AS CheckEmail
   FROM TestTable;

Скриншот 3

В результате функция отработала и показала нам, какие записи содержат некорректный Email.

Заметка! Для комплексного изучения языка SQL рекомендую почитать мою книгу «SQL код», в ней язык SQL рассматривается как стандарт, чтобы после прочтения данной книги можно было работать с языком SQL в любой системе управления базами данных.

На сегодня это все, надеюсь, материал был Вам полезен, пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.