Перевірка email на валідність в microsoft sql server на t-sql

167

Вітаю всіх відвідувачів сайту 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.

–перевірка email адреси create function checkemail (@email varchar (100) –адреса електронної пошти ) returns bit as begin /* ***** опис перевірка адреси електронної пошти (email) на коректність. Функція повертає: 1 – коректний email 0 – email некоректний null – якщо значення email дорівнює null ***** приклад запуску select dbo.checkemail(‘[email protected]’) 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 (‘[email protected]’), (‘myemail123#yandex.ru’), (‘myemail123@майл.ру’), (‘myemail”[email protected]’), (‘

Як бачите, в тестових даних у нас є некоректні email адреси.

Приклад запуску функції для перевірки email

Щоб дізнатися, які адреси в нашій таблиці коректні, а які ні, ми можемо написати наступний запит із застосуванням створеної раніше функції.

select id, email, dbo.checkemail (email) as checkemail from testtable;

В результаті функція відпрацювала і показала нам, які записи містять некоректний email.