在後台的專案中,會經常遇到,就是資訊的查詢,這裡就舉個簡單的例子,如搜尋某乙個產品的資訊,在乙個表裡面有多個字段,而搜尋的內容可能是其中的某個字段,這樣只有多欄位查詢才能實現。
mysql多欄位模糊查詢:指在表單中對多字段進行多個關鍵字的模糊查詢,而這個關鍵字在所有字段裡面的其中之一(也可以關聯多表查詢)。
例如:表product裡面有四個字段 id、name、title、description 產品的id、名稱、標題、介紹,只要輸入其中之一的關鍵字,就能找到該產品的的資訊。
更精確的搜尋方法是處理多個關鍵字的同時搜尋,一般的處理方式是按空格將使用者輸入的字串進行分割,形成多個關鍵字,然後在從這幾個欄位中查詢包含這些關鍵字的記錄。
顯然正對某個字段進行單獨的查詢,這樣是不現實的,要實現多欄位查詢,使用mysql的concat( )函式:
語法: concat(str1, str2, ...)
返回值:由全體輸入引數 str1, str2, ... 合併在一起而得到的字串。只要輸入的引數中有的值為null,concat( )函式就返回null。
mysql實現多字段的查詢可以怎麼寫:
1select id,name,title,description from product where concat(id,name,title,description) link '
%關鍵字%
';
這樣的寫法,要保證concat裡面的字段 id,name,title,description 的值都不能為null,否則會出現查出的資料不完整。
如果在建product表的時候,有的字段沒有設定成 not null,那麼mysql的多字段搜尋sql語句改為:
1select id,name,title,description from product where concat(ifnull(id,''),ifnull(name,''),ifnull(title,''),ifnull(description,'')) link '
%關鍵字%
';
這樣就不會出現漏掉的資料。
MySQL簡單實現多欄位模糊查詢
我所做的 專案前些時提了新需求,要求前台搜尋商品除了能通過商品名稱搜尋到以外,還可以通過別個資訊搜尋,比如 商品編號 詳情內容描述等等,類似於全文搜尋了。我首先想到的就是lucene,但是對 這樣的改動量就太大了。目前線上版本如果做這種改動怕測試又出什麼么蛾子,如果又重新建表將這些資訊另外儲存起來又...
MySQL簡單實現多欄位模糊查詢
原創 2016年05月03日 16 40 20 我所做的 專案前些時提了新需求,要求前台搜尋商品除了能通過商品名稱搜尋到以外,還可以通過別個資訊搜尋,比如 商品編號 詳情內容描述等等,類似於全文搜尋了。我首先想到的就是lucene,但是對 這樣的改動量就太大了。目前線上版本如果做這種改動怕測試又出什...
mysql查詢多欄位 mysql多欄位模糊查詢
在最近的乙個專案需要實現在mysql單錶多關鍵字模糊查詢,但這數個關鍵字並不一定都存在於某個字段。例如現有table表,其中有title,tag,description三個字段,分別記錄一條資料的標題,標籤和介紹。然後根據使用者輸入的查詢請求,將輸入的字串通過空格分割為多個關鍵字,再在這三個欄位中查...