如何对数据库一个字段进行模糊分组?

表中有一个地址字段,想要使用分组函数 group by 把地址差不多相近的多于一条的选出来,这样的功能仅使用数据库自带的有办法实现吗?

阅读 4.7k
1 个回答

Mysql有一个自带的函数soundex,但是只能对英文进行模糊匹配:

mysql> select soundex('microsoft');
+----------------------+
| soundex('microsoft') |
+----------------------+
| M26213               |
+----------------------+
1 row in set (0.00 sec)

mysql> select soundex('macrosoft');
+----------------------+
| soundex('macrosoft') |
+----------------------+
| M26213               |
+----------------------+
1 row in set (0.00 sec)

所以我能想到的唯一办法也许你可以考虑另建一个字段,然后把所有的地址批量转化为拼音,也许可以用soundex加group by的方式过滤一下。

或者另外的作法是考虑用SUBSTRING(address, 1, 3)这样的函数取出某列的前3个字符进行group by。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题