我需要连接存储了相同名称但写法不同的两个表。在一个表中,table1.name = 'A Jameson',在另一个表中,table2.name = 'Anthony Jameson'。我已经设法在查询中使用它来连接两个表:
... join table1 on substring_index(table1.name,' ',-1) like substring_index(table2.name,' ',-1) ...
但是,显然它会返回具有匹配姓氏的每个人(“James Jameson”、“Carl Jameson”等)。
有没有办法取最长的字符串(表2)并将名字缩短为首字母?
所以'Anthony Jameson'转换为'A Jameson',然后匹配一个加入。
由于存在包含 3 个单词的名称,例如“Craig B Henderson”或“Jolly Mary Bethelem”,这变得更加复杂。
理想情况下,除了姓氏之外的所有名称( last word) 应转换为首字母。所以,'Craig B Henderson' -> 'C B Henderson' 和 'Jolly Mary Bethelem' -> 'J M Bethelem'。
谢谢
最佳答案
我建议使用正则表达式,然后使用 REGEXP 运算符在数据库表中找到它。
此处的文档:http://dev.mysql.com/doc/refman/5.1/en/regexp.html
否则你可能需要在拉出你的结果集之后再处理它。
关于用于正确连接的 MySQL 字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6929041/