MySQL Query на основе строки - PullRequest
0 голосов
/ 03 марта 2012

Этот запрос беспокоит меня последние 10 часов.Вот и мы:

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

Пример:

У меня есть следующие имена:

  • Приморские высоты
  • Приморские HGTS
  • Талладега
  • Торнкал-центр
  • Торнкал CTR
  • Йонкерс
  • Зебравилл

Я хочу, чтобы он вернулся так:

  • Приморские высоты
  • Талладега
  • Торнкал-центр
  • Йонкерс
  • Zebraville

В принципе, я думаю, что это должна быть подстрока (name, 0, 8), чтобы получить первые 8 символов, затем запустить эти 8 символов для следующей записи и, если они совпадают, игнорировать ее.

Может быть, я думаю о том, чтобы глубже в этом.Любое понимание или концепции, которые могут работать, будут оценены.

Ответы [ 4 ]

1 голос
/ 03 марта 2012

Попробуйте ниже:

Если разница между строками аналогична описанной в примере.

 select names from tablename group by substring_index(names," ",1)
1 голос
/ 03 марта 2012

Сначала вы бы запросили все данные.

Затем для каждой возвращенной записи вы хотите запустить алгоритм LCS (Longest Common Subsequence).

Если самая длинная общая подпоследовательность между двумя различными записями относится к числу по вашему выбору, вы можете классифицировать их как похожие.

http://en.wikipedia.org/wiki/Longest_common_subsequence_problem

edit: Так получилось, что для этого есть хорошая функция PHP: http://php.net/manual/en/function.similar-text.php

0 голосов
/ 03 марта 2012

Если различия между строками ограничены небольшим набором сокращений (HGTS <-> Высота, CTR <-> Центр и т. Д.), Вы можете просто захотеть сохранить таблицу с этими и заменить сокращения на полные версии , а затем проверьте на уникальность.

0 голосов
/ 03 марта 2012

Возможно, вы захотите взглянуть на soundex .Он не будет идеальным, но он может привести вас в стадион.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...