簡單實現mysql多欄位模糊查詢

2022-07-26 10:51:12 字數 1052 閱讀 6318

在後台的專案中,會經常遇到,就是資訊的查詢,這裡就舉個簡單的例子,如搜尋某乙個產品的資訊,在乙個表裡面有多個字段,而搜尋的內容可能是其中的某個字段,這樣只有多欄位查詢才能實現。

mysql多欄位模糊查詢:指在表單中對多字段進行多個關鍵字的模糊查詢,而這個關鍵字在所有字段裡面的其中之一(也可以關聯多表查詢)。

例如:表product裡面有四個字段  id、name、title、description 產品的id、名稱、標題、介紹,只要輸入其中之一的關鍵字,就能找到該產品的的資訊。

更精確的搜尋方法是處理多個關鍵字的同時搜尋,一般的處理方式是按空格將使用者輸入的字串進行分割,形成多個關鍵字,然後在從這幾個欄位中查詢包含這些關鍵字的記錄。

顯然正對某個字段進行單獨的查詢,這樣是不現實的,要實現多欄位查詢,使用mysql的concat( )函式:

語法:  concat(str1, str2, ...)

返回值:由全體輸入引數 str1, str2, ... 合併在一起而得到的字串。只要輸入的引數中有的值為null,concat( )函式就返回null。

mysql實現多字段的查詢可以怎麼寫:

1

select id,name,title,description from product where concat(id,name,title,description) link '

%關鍵字%

';

這樣的寫法,要保證concat裡面的字段 id,name,title,description 的值都不能為null,否則會出現查出的資料不完整。

如果在建product表的時候,有的字段沒有設定成 not null,那麼mysql的多字段搜尋sql語句改為:

1

select 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三個字段,分別記錄一條資料的標題,標籤和介紹。然後根據使用者輸入的查詢請求,將輸入的字串通過空格分割為多個關鍵字,再在這三個欄位中查...