在 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 中的表的多个列中查找连接的字符串的主要内容,如果未能解决你的问题,请参考以下文章
从pandas DataFrame中另一列中的位置给定的字符串列中提取字符[重复]