用于正确连接的 MySQL 字符串操作

标签 mysql string

我需要连接存储了相同名称但写法不同的两个表。在一个表中,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/

相关文章:

java - 尽管我生成的查询工作正常,但为什么 JDBC-MySQL 会在 SQL 语法中抛出错误?

mysql - 在 MySQL 中查找组组

java - 根据 JComboBox 中的第一项显示项目

Python 3,将存储二进制数据的字符串转换为 Int

java - 字符串数组和字符串

mysql - mysql 中的 ROW_NUMBER() 等效函数

mysql - 如何使用富文本框保持文本格式?

python - 如何删除Python中特定字符之前的所有字符?

java - 为什么 java.lang.String 是大写的?

java - 拆分这个字符串?