mysql like模糊匹配,按照匹配度排序方式
mysql like模糊匹配,按照匹配度排序
需求:需要查詢用戶表里面的用戶名稱,根據(jù)用戶名稱的相似度進(jìn)行排序,總表數(shù)據(jù) 20萬+
方法一: $keyword = ‘簡筆畫’;
LENGTH()
SELECT nick_name,id FROM show_user WHERE nick_name LIKE '%$keyword %' ORDER BY LENGTH($keyword )
時間: 0.0014s
tp5 里面無法使用->order(LENGTH()) ;網(wǎng)上也沒有查找到數(shù)據(jù)資料。有知道的可以告知.
方法二
SELECT nick_name,id,(length(nick_name)-length('簡筆畫')) as rn FROM show_user WHERE nick_name LIKE '%簡筆畫%' ORDER BY rn
方法三
SELECT nick_name,id,LOCATE("簡筆畫",nick_name) as rn FROM show_user WHERE nick_name LIKE '%簡筆畫%' ORDER BY rn ASC
此時查詢出來的數(shù)據(jù)無法100%完全匹配順序, LOCATE() 是匹配文字的在字段的中的位置。
LOCATE(substr,str);
返回字符串substr中第一次出現(xiàn)子字符串的位置 str。
mysql獲取模糊,根據(jù)模糊查詢匹配度大小排序
方法一
根據(jù)匹配結(jié)果的長短排序
select * from audit_manage_pro where pro_name LIKE '%集成電路%' ORDER BY ABS(LENGTH(pro_name)-LENGTH('集成電路'))
方法二
select * from audit_manage_pro where pro_name LIKE '%集成電路%' ORDER BY LOCATE('集成電路',pro_name)
方法三
select * from audit_manage_pro where pro_name LIKE '%集成電路%' ORDER BY REPLACE(pro_name,'集成電路','')
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
故障的機(jī)器修好后重啟,狂拉主庫binlog,導(dǎo)致網(wǎng)絡(luò)問題的解決方法
本文主要記錄一次簡單的、典型的故障,發(fā)生問題的原因很簡單,這個問題發(fā)生也很簡單,各位同學(xué)一定要注意,一不留神就會對主庫造成影響2016-04-04很全面的MySQL處理重復(fù)數(shù)據(jù)代碼
這篇文章主要為大家詳細(xì)介紹了MySQL處理重復(fù)數(shù)據(jù)的實現(xiàn)代碼,如何防止數(shù)據(jù)表出現(xiàn)重復(fù)數(shù)據(jù)及如何刪除數(shù)據(jù)表中的重復(fù)數(shù)據(jù),感興趣的小伙伴們可以參考一下2016-05-05Mysql事務(wù)并發(fā)臟讀+不可重復(fù)讀+幻讀詳解
這篇文章主要介紹了Mysql事務(wù)并發(fā)臟讀+不可重復(fù)讀+幻讀詳解,文章基于Mysql事務(wù)的相關(guān)資料展開對主題的詳細(xì)介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-04-04Windows10下mysql 5.7.21 Installer版安裝圖文教程
這篇文章主要為大家詳細(xì)介紹了Windows10下mysql 5.7.21 Installer版安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09