在一個table中有省,市,縣,期,棟,單元,室幾個字段,而後用戶輸入一個地址從表中的字段拼接起來進行模糊查詢。sql
解決辦法:spa
《MySQL權威指南》中CONCAT的使用方法,在書中的對CONCAT的描述是:code
CONCAT(str1,str2,…)
返回值:由全體出入參數合併在一塊兒而獲得的字符串。只要輸入的參數中有NULL值,就返回NULL。CONCAT容許只有一個輸入參數的狀況。blog
所以,MySQL單表多字段模糊查詢能夠經過下面這個SQL查詢實現:字符串
selec * from table where 1 and CONCAT(省,市,縣,期,棟,單元,室) like '%查詢的地址%';
可是這樣有個問題,若是這幾個字段中有值爲NULL,則返回的也是NULL,那麼這一條記錄可能就會被錯過,怎麼處理呢,我這邊使用的是IFNULL進行判斷,則sql改成:table
selec * from table where 1 and CONCAT(IFNULL(省),IFNULL(市),IFNULL(縣),IFNULL(期),IFNULL(棟),IFNULL(單元),IFNULL(室)) like '%查詢的地址%';