MySQL строки манипуляции для правильного соединения - PullRequest
2 голосов
/ 03 августа 2011

Мне нужно объединить две таблицы, которые хранят одно и то же имя, но пишутся по-разному. В одной таблице table1.name = 'A Jameson', а в другой таблице table2.name = 'Anthony Jameson'. Мне удалось объединить обе таблицы, используя это в запросе:

...
join table1 on substring_index(table1.name,' ',-1) like substring_index(table2.name,' ',-1)
...

Но, очевидно, он возвращает всех с совпадающей фамилией («Джеймс Джеймсон», «Карл Джеймсон» и т. Д.).

Есть ли способ взять самую длинную строку (таблица2) и сократить имя до начального?
, чтобы «Энтони Джеймсон» преобразовался в «Джеймсон», а затем сопоставить для присоединиться.

Это еще более осложняется тем фактом, что есть имена с 3 словами, например, «Крейг Б. Хендерсон» или «Веселая Мэри Бетелем».
В идеале все имена, кроме фамилии ( последнее слово) следует преобразовать в инициалы. Итак, «Крейг Б Хендерсон» -> «C B Хендерсон» и «Jolly Mary Bethelem» -> «J M Bethelem».

Спасибо

1 Ответ

0 голосов
/ 03 августа 2011

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

Документация здесь: http://dev.mysql.com/doc/refman/5.1/en/regexp.html

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

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