在最近的乙個專案需要實現在mysql單錶多關鍵字模糊查詢,但這數個關鍵字並不一定都存在於某個字段。例如現有table表,其中有title,tag,description三個字段,分別記錄一條資料的標題,標籤和介紹。然後根據使用者輸入的查詢請求,將輸入的字串通過空格分割為多個關鍵字,再在這三個欄位中查詢包含這些關鍵字的記錄。
在插入記錄的同時,將需要進行多欄位模糊查詢的字段合併成乙個字串並加入到乙個新的字段中,然後對這個新字段進行模糊查詢。使用全文檢索,但是這需要用到中文分詞或者將漢字轉化為拼音(拆分漢字是不可行的,mysql預設ft最小位元組為4),而且並不利於今後的維護。
在網上爬了兩天,對此問題的處理都沒有找到滿意的解決方法,最後在《mysql權威指南》中翻到了concat的使用方法,在書中的對concat的描述是:
concat(str1,str2,…)
返回值:由全體出入引數合併在一起而得到的字串。只要輸入的引數中有null值,就返回null。concat允許只有乙個輸入引數的情況。
因此,mysql單錶多關鍵字模糊查詢可以通過下面這個sql查詢實現
select * from `magazine` where concat(`title`,`tag`,`description`) like 『%關鍵字%'
MYSQL 多欄位模糊查詢
mysql單錶多字段模糊查詢可以通過下面這個sql查詢實現 select from magazine where concat title,tag,description like 關鍵字 但是這樣有個問題,如果這三個欄位中有值為null,則返回的也是null,那麼這一條記錄可能就會被錯過,可以使用...
MySQL單錶多字段模糊查詢
在最近的乙個專案需要實現在單錶中對多字段進行多個關鍵字的模糊查詢,但這數個關鍵字並不一定都存在於某個字段。例如現有table表,其中有 title,tag,description三個字段,分別記錄一條資料的標題,標籤和介紹。然後根據使用者輸入的查詢請求,將輸入的字串通過空格分割為多 個關鍵字,再在這...
MySQL簡單實現多欄位模糊查詢
我所做的 專案前些時提了新需求,要求前台搜尋商品除了能通過商品名稱搜尋到以外,還可以通過別個資訊搜尋,比如 商品編號 詳情內容描述等等,類似於全文搜尋了。我首先想到的就是lucene,但是對 這樣的改動量就太大了。目前線上版本如果做這種改動怕測試又出什麼么蛾子,如果又重新建表將這些資訊另外儲存起來又...