首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨多列搜索

跨多列搜索
EN

Stack Overflow用户
提问于 2013-08-29 09:50:45
回答 3查看 154关注 0票数 2

我使用的是Mysql查询:

代码语言:javascript
复制
WHERE fname LIKE '%{$query}%' OR lname LIKE '%{$query}%' OR zipcode LIKE '%{$query}%' OR city LIKE '%{$query}%'

假设我的数据库中有以下信息:

  • 名字:比尔
  • 姓:盖茨
  • 邮政编码: 12345 AA
  • 城市:纽约

当我搜索‘纽约’时,我得到了预期的结果(比尔盖茨),但当我搜索“纽约比尔”时,我没有得到任何结果。

在多个列中搜索的正确查询是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-29 09:58:27

当在语句中对列使用LIKE时,您是说将所有的"bill new york“与City "New York”进行比较,这将失败,因为"bill“一词是在查询中而不是在列中。

在这种情况下,您最好使用MySQL的全文搜索,如下所示;

代码语言:javascript
复制
SELECT FieldName, 
MATCH (FieldName) AGAINST (+"Bill New York" IN BOOLEAN MODE) AS Relevance
FROM MyTable
WHERE MATCH (FieldName) AGAINST (+"Bill New York" IN BOOLEAN MODE) 
HAVING Relevance > 0
ORDER BY Relevance DESC

如果你能提供你的表格结构,我可以扩展答案。

票数 3
EN

Stack Overflow用户

发布于 2013-08-29 09:57:49

您所遇到的问题是,类似基本上只是=的大小写。

你可以用两种方法来做你想要做的事情,第一卫星是在卫星上爆炸你的$query,并对发现的每一件工作使用类似的文件,这很麻烦,我不建议你这么做。

更可取的选择是对()使用全文搜索匹配()--这要简单得多,而且代码http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html <更干净--这是一个很好的起点

票数 0
EN

Stack Overflow用户

发布于 2013-08-29 09:59:06

您要么需要将查询解析成单独的单词,然后动态地构造一个查找WHERE子句,该子句分别搜索每个字段,并将它们放在一起进行ORing。

使用全文索引。

我建议采用后者。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18507622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档