需求
模糊查询app_vote_log_data数据结果例如搜索“王”,期望结果是按着匹配度排序,关键字靠首位、关键字次位置、关键字次次位,例如展示结果为: 王大 王二 王飞 李王艺 李王尔 大小王 查询含“王”结果按着优先顺序显示
解法
MySQL 中使用like 获取到的结果不是按着需求排序的,获取到的结果是乱序的。
使用locate 函数
select
nickname
from
app_vote_log_data
where
locate('王', nickname)> 0
order by
locate('王', nickname) asc
使用INSTR 函数
select
nickname
from
app_vote_log_data
where
instr(nickname, '王')> 0
order by
instr(nickname, '王') asc
使用POSITION 函数
select
nickname
from
app_vote_log_data
where
POSITION('王' in nickname)> 0
order by
POSITION('王' in nickname) asc
混搭版
select
nickname
from
app_vote_log_data
where
nickname like '%天%'
order by
locate('天', nickname) asc
参考
[1] https://www.cnblogs.com/interdrp/p/12526928.html [2] https://blog.csdn.net/wcc27857285/article/details/90678337 [3] https://blog.csdn.net/liuxiao723846/article/details/39963109
|