在 MySQL 中的表的多个列中查找连接的字符串

Posted

技术标签:

【中文标题】在 MySQL 中的表的多个列中查找连接的字符串【英文标题】:Lookup for a concatanated string in multiple columns in a table in MySQL 【发布时间】:2012-02-05 06:18:37 【问题描述】:

我有一个地址字符串的单个用户输入文本框,即它不分为街区号、街道地址、城市、州和邮政编码。但是,我的 mysql 表对于每个地址组件都有单独的列。我的任务是从用户那里获取地址字符串,并在地址表中查找它并返回它匹配的行的 id。

如何针对地址表中的这些单独列对整个字符串进行反向查找?此外,解析字符串并不容易,因为用户可以输入多个空格,街道名称可能很棘手,并且其中可能包含多个单词。

总结一下,如果用户输入 123 South Main St Los Angeles CA 92032,那么我应该在地址表中搜索列(地址 ID、街区号、街道、城市、州、邮编)并返回地址 ID。

谢谢, 夏奇拉

【问题讨论】:

【参考方案1】:
select * 
from Address
where concat(street, city) like '%input%';

您需要全文搜索设置,请参阅 http://devzone.zend.com/26/using-mysql-full-text-searching/ 和http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

【讨论】:

感谢 Sachin 帮助很大,但是如果我为连接添加空白空间,效果会更好,例如WHERE concat(块号,'',街道名称,'')。但是,我正在寻找的是更完整的文本搜索功能,如果用户错过了输入城市或州,那么它也应该可以工作。在您推荐的查询中,用户应按正确的顺序输入地址。 好的。我在右侧看到很多与全文搜索相关的问题,您检查了吗?如果有帮助,请参阅dev.mysql.com/doc/refman/5.5/en/fulltext-search.html。

以上是关于在 MySQL 中的表的多个列中查找连接的字符串的主要内容,如果未能解决你的问题,请参考以下文章

从 MySQL 中具有不同列的表的多个连接结果中删除重复项

从pandas DataFrame中另一列中的位置给定的字符串列中提取字符[重复]

将 data.table 列快速连接成一个字符串列

Pandas - 检查列表列中的字符串列是不是按行排列

从 databricks 表的字符串列中收集用户信息(电子邮件、IP 地址等)

将列更新为连接列中的值