近期在做項目時遇到了一個全表全欄位多條件搜索的需求,在平時搜索最常見的就是 欄位+like +‘% 條件%’這種模式,但遇到多條件多欄位時,這種就不適用了。 表欄位已知,條件未知,條件數量未知,這種情況我們不可能每多一個條件就加一個and。 解決辦法: 先將用戶輸入的條件存入一個數組中,例如以空格隔 ...
近期在做項目時遇到了一個全表全欄位多條件搜索的需求,在平時搜索最常見的就是 欄位+like +‘% 條件%’這種模式,但遇到多條件多欄位時,這種就不適用了。 表欄位已知,條件未知,條件數量未知,這種情況我們不可能每多一個條件就加一個and。
解決辦法:
先將用戶輸入的條件存入一個數組中,例如以空格隔開的條件:
String[] strArr = SearchText.Split(" ");
進行迴圈遍曆數組中的條件進行sql拼接
for(int i =0;i<strArr.Length;i++)
{
sql += "concat(D1,D,D3,D4,D5,D6,D7,D8,D9,D10,Data) like '%"+strArr[i] + "%'and";
}
然後將拼接好的sql放入where條件下就可以了。
這個方法是在不考慮查詢效率時所使用的。
測試:數據約兩萬條,二十五個欄位,45kb左右,大約要17s(查詢條件無)