通過SQL實現模糊查詢按結果的匹配度排序

2022-08-24 03:54:14 字數 602 閱讀 8204

前幾天接到乙個新的需求:在模糊查詢的情況下實現,查詢結果按照精準度高低進行排序展示

即:結果與查詢關鍵字完全一致的優先順序最高,其次按照查詢結果中關鍵字出現的詞頻從高到低排序。

之前有接觸過搜尋一般都有專門的搜尋框架來做搜尋的事情,比如solr,es。

現在只在乙個功能的模糊查詢上來做:研究了一下,還是可以實現的,例子如下:

select distinct name,age from (

select id,name,age from teacher t where namelike '%小%'

union all

select id,name,age from student s where namelike '%小%')as aa

order by (

case when aa.name =  '小' then 1 

when aa.name like  '%小%'  then 2 else 0 end

) asc,(select length(aa.name) - length(replace(aa.name,'小',''))) desc;

當然,還可以根據自己的業務需求加其他的過濾條件。(僅供參考!)

sql模糊查詢實現組合查詢

資料庫程式設計中經常遇到組合查詢的情況。例如,某公司資料庫裡有一張存放使用者資訊的表user info,它有多個字段 userid,id,name,age,address。其中userid是表的主碼,表示使用者的使用者號,該使用者號對每個使用者都是唯一的 id表示使用者省份證號。此時要對使用者資訊進...

SQL語句實現模糊查詢

我們可以在where子句中使用like來達到模糊查詢的效果 在where子句中,可以對datetime char varchar欄位型別的列用like子句配合萬用字元選取那些 很像.的資料記錄,以下是可使用的萬用字元 零或者多個字元 單一任何字元 下劃線 特殊字元 在某一範圍內的字元,如 0 9 或...

sql語句實現模糊查詢

在進行資料庫查詢時,有完整查詢和模糊查詢之分。一般模糊查詢語句如下 select 字段 from 表 where 某欄位 like 條件 其中關於條件,sql提供了四種匹配模式 1,表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請使用兩個百分號 表示。比如 select f...