gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 03:23:39 25 4
gpt4 key购买 nike

假设有一个名为“tbl”的表,其中有一列名为“name”。我想搜索那个字段,但场景应该是这样的。

  • 如果搜索关键字在开头匹配,则这些结果应该排在第一位。
  • 如果搜索关键字在第二个单词的开头匹配,则这些结果应该是下一个。
  • Like wise(对于第三个、第四个、第五个……单词)
  • 如果搜索关键字在第一个词中匹配(但不在开头),则这些结果应该是下一个。
  • 如果搜索关键字在第二个词中匹配(但不在开头,则那些搜索结果应该在下一个。
  • Like wise(对于第三个、第四个、第五个……单词)

简单来说,我想对搜索结果进行排序,使其满足以下条件。

  • 全词匹配优先。
  • 关键字匹配优先级应该是第一个匹配的词。
  • 在匹配的词中,优先考虑关键词在该词中的位置。

例如,如果关键字是“城市”,则结果应按以下顺序出现。

Ember 之城是我最喜欢的电影
大城市
我的城市是伦敦
这是一座城市
我名单上的最后一个城市是波士顿
我住在城里
容量是某物可以容纳的最大量
电是玛尼动力源我的电费太贵了
这个电梯能容纳十个人

最佳答案

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

order by locate(concat(' ', city), concat(' ', column)),
locate(city, column)

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

第二个条件匹配字符串中的任何位置。同样的条件也成立——字符串中较早的部分匹配得更好。

关于mysql - 优先排序 LiKE 查询结果(sql、mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39886855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com