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%'
查詢結果如下: