Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом. Отловить некорректные Email  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
Здравствуйте! Есть столбец, в котором содержатся некорректно введенные Email.
Отдел по управлению проектами попросил меня список таких адресов.
Пока делаю так:

declare @t table (Email varchar(500))
insert @t
 select 'good@email.ru' union all select ' LeftSpace@email.ru' union all select 'RightSpace@email.ru ' union all select 'Space Inside@email.ru'
 union all select 'bad@@email.ru' union all select 'bad2@email.ru' union all select 'bad.@email.ru' union all select '.bad@emailru'
 union all select '@bademail.ru'
 
--select Email from @t

select Email from @t
where Email like '% %' or Email like '%@%@%' or Email like '%.%.%' or ascii(Email) < 65 or Email like '%[0-9]%'
31 май 11, 11:07    [10736955]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
Glory
Member

Откуда:
Сообщений: 104751
И какие критерии у "некорректного Email" ?
31 май 11, 11:21    [10737115]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
Glory,

Критерии у правильного Email:
- только английские буквы (маленькие или большие - не имеет значения)
- отсутствие цифр
- отсутствие пробелов
- точка не может встречаться более одного раза
- адрес не может начинаться с точки
- символ @ не может встречаться более одного раза
- адрес не может начинаться с @

Возможно что-то я пропустил...

Проверять корректность на этапе ввода не представляется возможным, т.к. адреса вводятся в тонком клиенте MS Project 2010.
31 май 11, 11:33    [10737257]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Начинающий SQL 2008,

Выкиньте вот эти критерии:
- отсутствие цифр
- точка не может встречаться более одного раза
31 май 11, 11:40    [10737335]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
а
Guest
Начинающий SQL 2008,
а чем цифры в Email не устраивают?
31 май 11, 11:40    [10737340]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Начинающий SQL 2008,

А вообще, на чистом T-SQL задача трудно реализуемая. Гораздо проще быстренько сваять CLR-процедуру для валидации адреса с помощью регулярного выражения. Например такого -- //http://www.regular-expressions.info/regexbuddy/email.html
31 май 11, 11:44    [10737372]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
а
Начинающий SQL 2008,
а чем цифры в Email не устраивают?
Политика компании

invm
А вообще, на чистом T-SQL задача трудно реализуемая. Гораздо проще быстренько сваять CLR-процедуру для валидации адреса с помощью регулярного выражения. Например такого -- //http://www.regular-expressions.info/regexbuddy/email.html
Спасибо за ссылку.

Вот тут нашел как вытащить адреса Email из Active Directory.
Active Directory & SQL Server

Если получится, то буду сравнивать Email сотрудников с тем, что завели в MS Project 2010.
31 май 11, 11:51    [10737447]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Тема - баян.
Например
И поиск по сайту по словам 'email', 'e-mail' и т.п.
31 май 11, 11:57    [10737486]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
А вот ещё наткнулся: https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=252826&hl=mail
В общем, поиск по этому форуму рулит!
31 май 11, 12:00    [10737508]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
iap,
Спасибо!
31 май 11, 12:06    [10737566]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
dsabitov
Member

Откуда:
Сообщений: 3
Начинающий SQL 2008,
советую контролировать email на стадии его ввода пользователем в форме.
Вот javascript (если что не так работает - напишите пож-ста):

function checkEmail(eml)
{
var loc_eml = trim(eml.toLowerCase())
var at = loc_eml.indexOf("@")
var lng = loc_eml.length

if(at==-1 || at==0 || at==lng-1 || at<=2)
{
return(false)
}
if(loc_eml.substr(at+1,lng-at-1).indexOf("@") != -1)
{
return(false)
}

if(loc_eml.charAt(0)=="." || loc_eml.charAt(0)=="-" || loc_eml.charAt(at-1)=="." || loc_eml.charAt(at+1)=="." || loc_eml.charAt(lng-1)==".")
{
return(false)
}

var legal = "abcdefghigklmnopqrstuvwxyz0123456789_-.@"
for(var i=0;i<=lng-1;i++)
{
if(legal.indexOf(loc_eml.charAt(i),0)==-1)
{
return(false)
}
if(i<=lng-2 && i>at && loc_eml.charAt(i)=="." && loc_eml.charAt(i+1)==".")
{
return(false)
}
}
return(loc_eml)
}
2 ноя 11, 16:48    [11541244]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. Отловить некорректные Email  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
dsabitov,

было выше
Проверять корректность на этапе ввода не представляется возможным, т.к. адреса вводятся в тонком клиенте MS Project 2010

MS Project 2010 фирменный продукт от Microsoft. Проверять ну никак нельзя :)
http://www.microsoftproject.ru/2010
2 ноя 11, 17:38    [11541718]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить