MySQL單錶多關鍵字模糊查詢的實現方法

2022-09-28 04:57:14 字數 822 閱讀 8037

在最近的乙個專案需要實現在mysql單錶多關鍵字模糊查詢,但這數個關鍵字並不一定都存在於某個字段。例如現有tablbhqztqkpzre表,其中有title,tag,des程式設計客棧cription三個字段,分別記錄一條資料的bhqztqkpzr標題,標籤和介紹。然後根據使用者輸入的查詢請求,將輸入的字串通過空格分割為多個關鍵字,再在這三個程式設計客棧欄位中查詢包含這些關鍵字的記錄。

可目前遇到的問題是,這些關鍵字是可能存在於三個欄位中的任意乙個或者多個,但又要求三個字段必須包含所有的關鍵詞。如果分別對每個字段進行模糊匹配,是沒法實現所需的要求,由此想到兩種方法:

在插入記錄的同時,將需要進行多欄位模糊查詢的字段合併成乙個字串並加入到乙個新的字段中,然後對這個新字段進行模糊查詢。 使用全文檢索,但是這需要用到中文分詞或者將漢字轉化為拼音(拆分漢字是不可行的,mysql預設ft最小位元組為4),而且並不利於今後的維護。

在網上爬了兩天,對此問題的處理都沒有找到滿意的解決方法,最後在《mysql權威指南》中翻到了concat的使用方法,在書中的對concat的描述是:

concat(str1,str2,…)

返回值:由全體出入引數合併在一起而得到的字串。只要輸入的引數中有null值,就返回null。concat允許只有乙個輸入引數的情況。

因此,mysql單錶多關鍵字模糊查詢可以通過下面這個sql查詢實現

select * from `magazine` where concat(`title`,`tag`,`description`) like 『%關鍵字%'

本文標題: mysql單錶多關鍵字模糊查詢的實現方法

本文位址: /shujuku/mysql/80845.html

hibernate多關鍵字模糊搜尋方法

1,與sql類似hql中也有左右連線和交叉連線,效果功能類似只是用法有稍微的差別,hql中不用on關鍵字,而是直接right join之前級聯的物件即可,如下 其中person與contact為一對多的關係,即乙個人有多個 的內容。再contact中有屬性person hql右連查詢,以右邊的為準查...

MySQL多關鍵字多欄位模糊查詢

假設有這樣兩條資料 表名為user 1 username admin,password 000000 2 username admin,password 123456 我們要實現的效果是可以輸入多個關鍵字查詢,多個關鍵字間以逗號分隔。使用上述表舉例 輸入單個關鍵字 admin 可查出這兩條資料,輸入...

mysql關鍵字匹配度模糊查詢

有時候專案中需要進行模糊查詢,但是要對查詢出來的結果進行匹配度排序,比如搜尋關鍵字是 北 需要把資料庫中第乙個字是北的排在前面,此時就可以用mysql的instr函式。instr 欄位名,字串 這個函式返回字串在某乙個欄位的內容中的位置,沒有找到字串返回0,否則返回位置 從1開始 例1 公升序排 s...