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