首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >优先排序LiKE查询结果(sql、mysql)

优先排序LiKE查询结果(sql、mysql)
EN

Stack Overflow用户
提问于 2016-10-06 03:02:39
回答 1查看 330关注 0票数 2

假设有一个名为'tbl‘的表,其中有一个名为'name’的列。我想搜索这个字段,但是情况应该是这样的。

  • 如果搜索关键字在开头匹配,那么这些结果应该放在第一位。
  • 如果搜索关键字在第二个单词的开头匹配,那么这些结果应该是下一个。
  • 就像智慧(对第三,第四,第五,.单词)
  • 如果搜索关键字在第一个单词中匹配(但在开头不匹配),那么接下来应该是这些结果。
  • 如果搜索关键字在第二个单词中匹配(但在开头不匹配),那么这些搜索结果应该是下一个。
  • 就像智慧(对第三,第四,第五,.单词)

简单地说,我想订购搜索结果以满足以下要求。

  • 整体词匹配是优先考虑的问题。
  • 关键字匹配的优先级应该放在第一个匹配词上。
  • 在匹配的单词中,优先级应该放在该单词中关键字的位置上。

举个例子,如果关键词是“城市”,结果应该是下面的顺序。

安伯城是我最喜欢的电影。

大城市

我的城市是伦敦

这是座城市

我名单上的最后一个城市是波士顿

我住在城里

容量某物所能包含的最大容量

电是电的动力来源我的电费太高了

这台电梯能容纳十人

EN

回答 1

Stack Overflow用户

发布于 2016-10-06 03:05:47

这有点棘手。但你可以这样做:

代码语言:javascript
运行
复制
order by locate(concat(' ', city), concat(' ', column)),
         locate(city, column)

第一个条件与单词的开头相匹配--假设一个单词以空格开头。locate()返回位置,因此字符串中越早,搜索越高。

第二个条件匹配字符串中的任何位置。同样的条件成立-在字符串的早期是一个更好的匹配。

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

https://stackoverflow.com/questions/39886855

复制
相关文章

相似问题

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