mysql實現(xiàn)模糊查詢并按匹配程度排序
mysql模糊查詢并按匹配程度排序
寫項目,寫到模糊查詢的時候想到了應該匹配度高的信息考前,于是我就在網找了找,果然找到了方法。
需要用到case表達式
格式:
CASE WHEN condition_1 THEN result_1 WHEN condition_2 THEN result_2 … ELSE result END
案例
SELECT `課程號`, sum(CASE WHEN 成績 >= 60 THEN 1 ELSE 0 END )as 及格人數 , sum(case when 成績 < 60 THEN 1 ELSE 0 END)as 不及格人數 from score GROUP BY 課程號
代碼實現(xiàn)
select
u.id,u.name,u.sex,u.portrait,u.resume
from tb_user as u
where
u.name = #{userName} or u.name like concat('%',#{userName},'%')
order by
case
when u.name like concat('%',#{userName},'%') then length(REPLACE(u.name,#{userName},''))/length(u.name)
end結果:

但是有一個問題,如上圖的案例,如果搜索的是萵苣1,那么就什么也搜不到了
mysql使用case when實現(xiàn)模糊查詢搜索相似度達三個字以上
突然接到一個需求 說搜索要加一個條件 模糊查詢的時候要搜索到的數據得是相似度達到三個字以上的結果
雖然sql不是很難 但是感覺確實需要記錄一下
首先在impl實現(xiàn)層把傳過來的字符串格式的搜索條件進行一個格式轉換 轉換成數組

然后在mybatis里面進行一個foreach循環(huán)遍歷
sql如下:

在這里使用了mysql的CASE WHEN 關鍵字 當模糊查詢搜索到的時候就賦個值為1沒有搜索到則是0 以此相加 最后where條件里面加個判斷 查詢結果>=3的就ok了

這是這條sql的運行結果 一切ok
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Dbeaver連接不上mysql數據庫(Access denied for user&nb
本文主要介紹了Dbeaver連接不上mysql數據庫(Access denied for user ‘root‘@‘localhost‘),嘗試了很多方法,下面就來介紹一下,感興趣的可以了解一下2024-04-04

