亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql實(shí)現(xiàn)模糊查詢并按匹配程度排序

 更新時(shí)間:2023年08月31日 14:51:12   作者:zrllllll  
這篇文章主要介紹了mysql實(shí)現(xiàn)模糊查詢并按匹配程度排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mysql模糊查詢并按匹配程度排序

寫(xiě)項(xiàng)目,寫(xiě)到模糊查詢的時(shí)候想到了應(yīng)該匹配度高的信息考前,于是我就在網(wǎng)找了找,果然找到了方法。

需要用到case表達(dá)式

格式:

CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
…
ELSE result END

案例

SELECT `課程號(hào)`,
sum(CASE 
	WHEN 成績(jī) >= 60	THEN
		1
	ELSE
		0
END 
)as 及格人數(shù) ,
sum(case when 成績(jī) < 60 THEN 1 ELSE 0 END)as 不及格人數(shù)
from score GROUP BY 課程號(hào)

代碼實(shí)現(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

結(jié)果:

但是有一個(gè)問(wèn)題,如上圖的案例,如果搜索的是萵苣1,那么就什么也搜不到了

mysql使用case when實(shí)現(xiàn)模糊查詢搜索相似度達(dá)三個(gè)字以上

突然接到一個(gè)需求  說(shuō)搜索要加一個(gè)條件 模糊查詢的時(shí)候要搜索到的數(shù)據(jù)得是相似度達(dá)到三個(gè)字以上的結(jié)果

雖然sql不是很難  但是感覺(jué)確實(shí)需要記錄一下

首先在impl實(shí)現(xiàn)層把傳過(guò)來(lái)的字符串格式的搜索條件進(jìn)行一個(gè)格式轉(zhuǎn)換 轉(zhuǎn)換成數(shù)組

然后在mybatis里面進(jìn)行一個(gè)foreach循環(huán)遍歷

sql如下:

在這里使用了mysql的CASE WHEN 關(guān)鍵字 當(dāng)模糊查詢搜索到的時(shí)候就賦個(gè)值為1沒(méi)有搜索到則是0 以此相加 最后where條件里面加個(gè)判斷 查詢結(jié)果>=3的就ok了

這是這條sql的運(yùn)行結(jié)果 一切ok

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論