@maxilian

Выборку дублирующих email адресов в sql?

Как я могу сделат ьвыборку дублирующих адресов электронной почты базы данных, учитывая возможность автоматической маркировки и пунктуации в Gmail?

Например, я хочу, чтобы эти адреса были обнаружены как дубликаты:

username@gmail.com
user.name@gmail.com
username+label@gmail.com
user.name+label@gmail.com

h.e.l.en.tr.i.s.t.a.n.y.838454@gmail.com
h.e.l.e.n.tr.i.s.t.a.ny838454@gmail.com
he.l.en.t.r.istan.y.838454@gmail.com
h.elen.t.ri.s.t.any8.38454@gmail.com

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

user.name@gmail.com и username@gmail.com фактически являются одним и тем же пользователем.
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
@FanatPHP
Ну, запрос, конечно, без индекса, но один раз запустить можно

SET SESSION group_concat_max_len = 10000000;
select replace(replace(email, '.',''),'+',''), group_concat(email), count(1) cnt
from table 
group by replace(replace(email, '.',''),'+','') 
having cnt > 1
order by cnt desc
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
а без скрипта это возможно, чисто sql?
Можно. Оформляете действия, выполняемые в скрипте, как функцию. И добавьте в таблицу вычисляемое поле с результатом этой функции. Или используйте его для группировки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы