1. 程式人生 > >mysql 多欄位關鍵詞模糊查詢

mysql 多欄位關鍵詞模糊查詢



使用上表舉例:

1,輸入單個關鍵字“001”可查出四條資料,可實現的sql語句是:

SELECT * FROM tbl_app_clinic_item WHERE CONCAT(applicationCode, clinicItemDictCode) LIKE '%001%'


2,輸入兩個關鍵字“001,003”可查出2資料,可實現的sql語句是:


SELECT * FROM tbl_app_clinic_item WHERE CONCAT(applicationCode, clinicItemDictCode) LIKE '%001%'

 AND CONCAT(applicationCode, clinicItemDictCode) LIKE '%003%'


總結:

select * from Table_Name where concat(欄位1, '分隔符', 欄位2, '分隔符', ...欄位n) like '%關鍵字1%' and concat(欄位1, '分隔符', 欄位2, '分隔符', ...欄位n) like '%關鍵字2%' ......;

concat的作用是連線字串,但這樣有一個問題:如果你輸入單個關鍵字“001003”也會查到資料,這並不是我們需要的結果,

解決方法是:由於使用逗號分隔多個關鍵字,說明逗號永遠不會成為關鍵字的一部分,所以我們在連線字串時把每個欄位以逗號分隔即可解決此問題,下面這個sql語句不會查詢到資料:

SELECT FROM tbl_app_clinic_item WHERE CONCAT(applicationCode, ',', clinicItemDictCode) LIKE '%001003%' 

如果分隔符是空格或其他符號,修改 ',' 為 '分隔符' 即可。

這樣有個問題,如果這兩個欄位中有值為NULL,則返回的也是NULL,即將表格中資料的appl那麼這一條記錄可能就會被錯過,對此,我們可以使用IFNULL函式。sql語句可改為:

SELECT  *  FROM  tbl_app_clinic_item  WHERE  

CONCAT(IFNULL(applicationCode, ''),  IFNULL(clinicItemDictCode,''))  LIKE  '%003%'

查詢結果如下: