首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用MySQL根据搜索查询在字符串中的位置对搜索结果进行排序

使用MySQL根据搜索查询在字符串中的位置对搜索结果进行排序
EN

Stack Overflow用户
提问于 2010-01-12 04:54:00
回答 5查看 2.6K关注 0票数 5

我希望我的搜索结果是从最小到最大的字符串位置的顺序。例如,搜索“香蕉”返回:

婴儿食品,李子,香蕉和大米,紧绷

香蕉、脱水或香蕉粉

香蕉,生的

香蕉面包,用人造黄油制作而成

坎贝尔汤公司,V8溅汁饮料,草莓香蕉

坎贝尔汤公司,V8 Smoothies,草莓香蕉

坎贝尔汤公司,V8 V.融合汁,草莓香蕉

我想把“香蕉,生”放在首位,因为“香蕉”是结果中的第一个词,我想要“坎贝尔汤.”因为“香蕉”是最后一个词。

我知道我可以使用strpos()来找到这个位置,但是我如何把它们放在一起呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-12 05:24:38

您可以在MySQL中很容易地做到这一点。

代码语言:javascript
运行
复制
 SELECT  title,LOCATE('banana',title)
 FROM myTable   
 WHERE  LOCATE('banana',title) > 0
 ORDER BY LOCATE('banana',title) 

标题表示MySql表的列。

票数 5
EN

Stack Overflow用户

发布于 2010-01-12 05:07:30

您还可以选择INSTR(titles, 'banana') as firstIndex并根据该值进行排序。这将返回在干草堆内的针的第一个定位索引的索引。WHERE子句上的标记,该子句省略了任何不是LIKE '%banana%'的内容,应该设置如下:

代码语言:javascript
运行
复制
SELECT id, pubdate, title, INSTR(title, 'tea') as `index`
FROM article
WHERE title LIKE '%tea%'
ORDER BY `index` ASC;
票数 0
EN

Stack Overflow用户

发布于 2010-01-12 05:12:01

它将涉及到不必要的复杂usort或类似的PHP,最好在查询中这样做,例如:

代码语言:javascript
运行
复制
SELECT data, INSTR(data, 'banana') as index
FROM table
WHERE data LIKE '%banana%'
ORDER BY index != 0, index
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2046784

复制
相关文章

相似问题

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