9
我有一個需要搜索特定表(SQL)中的數據的搜索頁的asp.net Web應用程序。今天它只有一個簡單的LIKE查詢,使用參數化的SQL:使用邏輯運算符進行SQL搜索
SqlParameter[] param = new SqlParameter[1];
param[0] = new SqlParameter("@searchText", SqlDbType.VarChar);
param[0].Value = "%" + text + "%";
using (SqlDataReader dr = SqlHelper.ExecuteReader(this.ConnectionString, CommandType.StoredProcedure, "isp_Search", param))
{
//Do something
}
現在我需要添加選項以使用邏輯運算符進行搜索。
所以在文本框中,用戶可以搜索喜歡的事情
Adam OR Adams
James AND NOT Jame
Douglas AND (Adam OR Adams)
添加全文索引的表是不是因爲我不控制數據模型中的優先選擇。
我正在尋找解釋文本查詢的方法,並將其轉換爲具有適當數量的SqlParams的SQL語句。
searchexpression = "Douglas AND (Adam OR Adams)"
MakeSearchQuery(searchexpression, out sqlquery, out SqlParam[] params)
將返回somelike像
sqlquery = "SELECT someFields FROM table WHERE [email protected] AND ([email protected] OR [email protected])"
而一個sqlParams像
sqlParam[0] = 'Douglas'
sqlParam[1] = 'Adam'
sqlParam[2] = 'Adams'
現在必須有專人在此之前做出這樣的事情?我搜索過SO和Google,但沒有取得任何真正的成功。對於開源/免費代碼或者如何將搜索表達式轉換爲SQL的好主意,我們表示歡迎。
你使用哪個SQL引擎,答案因數據庫而異。一些支持正則表達式,有些則不支持。 – Johan
SQL Server 2008 R2 – Paaland