powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Исправление опечаток
11 сообщений из 11, страница 1 из 1
Исправление опечаток
    #40052673
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, доброго времени суток!
Ковырял-ковырял, не наковырял.
Суть:есть таблица, в ней столбец email
Конечно же, когда бд подгружала эти почты, которые некогда вводились человеком вручную, нашлись опечатки.
Ну например
  • пробелы в самом начале строки
  • пробелы в конце строки
  • вместо @mail.ru написано @mal.ru ну или вместо @gmail.com написано @gmal.com
1)убрать все пробелы, которые имеются, ибо в строке со значением почты пробелы недопустимы
2)убрать первую часть почты (например iamnevil@gmail.com) до знака @ (получим @gmail.com)
3)после этого, сделать дистинкты этих значений и их каунты
4)на основе этих данных, каунты, которых меньше всего-вероятно опечатки, значит мы их будем сравнивать с доменами, каунты которых высоки.То есть:
count(@gmail.com)=1
а count (@gmail.com)=9999
И вот тут я застрял и не могу придумать, как сделать так, чтобы он сравнил @gmai.com и @gmail.com, и если они отличаются в 1-2 знака, то @gmai.com должен исправиться на @gmail.com
Буду рад любым идеям.

Вот имеющийся код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
/****** Script for SelectTopNRows command from SSMS  ******/
SELECT 
distinct(
	SUBSTRING(
		REPLACE(email, ' ', ''), Charindex('@', REPLACE(email, ' ', '')) + 0, Len(email)
			)
		),
count(
	SUBSTRING(
		REPLACE(email, ' ', ''), Charindex('@', REPLACE(email, ' ', '')) + 0, Len(email)
			)
		)
  FROM MYTABLE
  group by SUBSTRING(REPLACE(email, ' ', ''), Charindex('@', REPLACE(email, ' ', '')) + 0, Len(email))
  order by count(SUBSTRING(REPLACE(email, ' ', ''), Charindex('@', REPLACE(email, ' ', '')) + 0, Len(email))) desc


Он дает 2 столбца
Первый-отрезок строки, который идет после @
Второй-каунт этих сгруппированных отрезков строки, которые идут после @
...
Рейтинг: 0 / 0
Исправление опечаток
    #40052683
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сразу вопрос

mail.com это ошибка в написании gmail.com или валидная запись?
...
Рейтинг: 0 / 0
Исправление опечаток
    #40052690
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

чиста как "повод для размышления"

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare @t table  (email varchar(100))
insert into @t values
('@mail.ru'),('@mal.ru'),('@gmail.com'),('@gmal.com')


;with cte as (
	select 
		t.email
		,STRING_AGG(a.s, '%') WITHIN GROUP (ORDER BY a.number) as xz
	from @t t
	cross apply (
		select
			substring(t.email,v.number+1,1) as s
			,v.number
		from master..spt_values v
		where type = 'P' and v.number < len(t.email)) a
	group by 	t.email
)
select
	t1.email as right_email
	,t2.email as wrong_email
from cte t1 inner join cte t2 on t1.email like t2.xz and t1.email <> t2.email



right_emailwrong_email@gmail.com@gmal.com@mail.ru@mal.ru
...
Рейтинг: 0 / 0
Исправление опечаток
    #40052727
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

проверить можно только на соответствие написанию адресов, описанных в RFC стандарте для email. Остальное можно с какой-то уверенностью проверить отсылкой тестового письма.
...
Рейтинг: 0 / 0
Исправление опечаток
    #40052761
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested

1)убрать все пробелы, которые имеются, ибо в строке со значением почты пробелы недопустимы


С чего вы взяли? Простое гугление показывает, что пробелы разрешены, если есть кавычки
...
Рейтинг: 0 / 0
Исправление опечаток
    #40052791
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza
сразу вопрос

mail.com это ошибка в написании gmail.com или валидная запись?

mail.com-ошибка в написании. К mail.ru он не подходит, потому что отличие в три знака. Поэтому он уходит в gmail.com, из-за отличия в 1 знак
Владислав Колосов
Nevillested,

проверить можно только на соответствие написанию адресов, описанных в RFC стандарте для email. Остальное можно с какой-то уверенностью проверить отсылкой тестового письма.

Эээ, в смысле только проверка на левая часть+@+доменное имя(правая часть)?
Критик
Nevillested

1)убрать все пробелы, которые имеются, ибо в строке со значением почты пробелы недопустимы


С чего вы взяли? Простое гугление показывает, что пробелы разрешены, если есть кавычки

Не нашел такого. Можно ссылку?
...
Рейтинг: 0 / 0
Исправление опечаток
    #40052799
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
mail.com-ошибка в написании. К mail.ru он не подходит, потому что отличие в три знака. Поэтому он уходит в gmail.com, из-за отличия в 1 знак

Т.е. вы стопроцентно уверены, что никто в принципе не может завести почтовый сервер в домене mail.com?
...
Рейтинг: 0 / 0
Исправление опечаток
    #40052813
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

https://coderoad.ru/2049502/%D0%9A%D0%B0%D0%BA%D0%B8%D0%B5-%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B-%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D1%8B-%D0%B2-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B5-emailЭти адреса электронной почты действительны:

prettyandsimple@example.com
very
.common@example.com
disposable
.style.email.with+symbol@example.com
other
.email-with-dash@example.com
x
@example.com (однобуквенная локальная часть)
"much.more unusual"@example.com
"very.unusual.@.unusual.com"@example.com
"very.(),:;<>[]\".VERY.\"very@\ \"very\".unusual"@strange.example.com
example-indeed@strange-example.com
admin
@mailserver1 (локальное доменное имя без домена верхнего уровня)
#!$%&'*+-/=?^_`{}|~@example.org
"()<>[]:,;@\\"!#$%&'-/=?^_`{}| ~.a"@example.org
" "@example.org (пробел между кавычками)
example@localhost (отправлено с localhost)
example@s.solutions (см. список доменов верхнего уровня Интернета )
user@com
user
@localserver
user@[IPv6:2001:db8::1]

Имхо - вам либо нужно изучать стандарт, либо воспользоваться какими-то уже существующими сервисами или бибилиотеками.

Но лучше, конечно, изменить сам бизнес-процесс получения адресов - в момент регистрации пользователю отправляется письмо с кодом, который он должен вввести.
...
Рейтинг: 0 / 0
Исправление опечаток
    #40052865
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны
Nevillested
mail.com-ошибка в написании. К mail.ru он не подходит, потому что отличие в три знака. Поэтому он уходит в gmail.com, из-за отличия в 1 знак

Т.е. вы стопроцентно уверены, что никто в принципе не может завести почтовый сервер в домене mail.com?

Нет конечно, в теории-запросто
На практике-очень маловероятно, поэтому такие жертвы допустимы думаю
Критик
Nevillested,

https://coderoad.ru/2049502/%D0%9A%D0%B0%D0%BA%D0%B8%D0%B5-%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B-%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D1%8B-%D0%B2-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B5-emailЭти адреса электронной почты действительны:

prettyandsimple@example.com
very
.common@example.com
disposable
.style.email.with+symbol@example.com
other
.email-with-dash@example.com
x
@example.com (однобуквенная локальная часть)
"much.more unusual"@example.com
"very.unusual.@.unusual.com"@example.com
"very.(),:;<>[]\".VERY.\"very@\ \"very\".unusual"@strange.example.com
example-indeed@strange-example.com
admin
@mailserver1 (локальное доменное имя без домена верхнего уровня)
#!$%&'*+-/=?^_`{}|~@example.org
"()<>[]:,;@\\"!#$%&'-/=?^_`{}| ~.a"@example.org
" "@example.org (пробел между кавычками)
example@localhost (отправлено с localhost)
example@s.solutions (см. список доменов верхнего уровня Интернета )
user@com
user
@localserver
user@[IPv6:2001:db8::1]


Имхо - вам либо нужно изучать стандарт, либо воспользоваться какими-то уже существующими сервисами или бибилиотеками.

Но лучше, конечно, изменить сам бизнес-процесс получения адресов - в момент регистрации пользователю отправляется письмо с кодом, который он должен вввести.
А вот это правда неожиданно.

Прошу прощения за бестактность, но по сути конкретики нет
автор воспользоваться какими-то уже существующими сервисами или бибилиотеками.

Что-то конкретное есть?
...
Рейтинг: 0 / 0
Исправление опечаток
    #40052907
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
На практике-очень маловероятно, поэтому такие жертвы допустимы думаю

mail.com это один из доменов халявных почтовых ящиков, предлагаемых Yahoo. У меня такой есть. Хорошо, что в вашу спам-базу он не попадёт.
...
Рейтинг: 0 / 0
Исправление опечаток
    #40052915
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

зря упрямитесь, рекомендации вполне обоснованные.

Что-то конкретное есть?

Поищите SQL server regular expressions и "проверка email регулярные выражения".
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Исправление опечаток
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]