我希望我的搜索结果是从最小到最大的字符串位置的顺序。例如,搜索“香蕉”返回:
婴儿食品,李子,香蕉和大米,紧绷
香蕉、脱水或香蕉粉
香蕉,生的
香蕉面包,用人造黄油制作而成
坎贝尔汤公司,V8溅汁饮料,草莓香蕉
坎贝尔汤公司,V8 Smoothies,草莓香蕉
坎贝尔汤公司,V8 V.融合汁,草莓香蕉
我想把“香蕉,生”放在首位,因为“香蕉”是结果中的第一个词,我想要“坎贝尔汤.”因为“香蕉”是最后一个词。
我知道我可以使用strpos()来找到这个位置,但是我如何把它们放在一起呢?
发布于 2010-01-12 05:24:38
您可以在MySQL中很容易地做到这一点。
SELECT title,LOCATE('banana',title)
FROM myTable
WHERE LOCATE('banana',title) > 0
ORDER BY LOCATE('banana',title)
标题表示MySql表的列。
发布于 2010-01-12 05:07:30
您还可以选择INSTR(titles, 'banana') as firstIndex
并根据该值进行排序。这将返回在干草堆内的针的第一个定位索引的索引。WHERE
子句上的标记,该子句省略了任何不是LIKE
'%banana%'
的内容,应该设置如下:
SELECT id, pubdate, title, INSTR(title, 'tea') as `index`
FROM article
WHERE title LIKE '%tea%'
ORDER BY `index` ASC;
发布于 2010-01-12 05:12:01
它将涉及到不必要的复杂usort
或类似的PHP,最好在查询中这样做,例如:
SELECT data, INSTR(data, 'banana') as index
FROM table
WHERE data LIKE '%banana%'
ORDER BY index != 0, index
https://stackoverflow.com/questions/2046784
复制相似问题