特定のテーブル(SQL)内のデータを検索する検索ページを必要とするasp.net Webアプリケーションがあります。今日はそれだけでparametized SQLをuseing、シンプルLIKEクエリを持っています論理演算子を使用した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)
sqlquery = "SELECT someFields FROM table WHERE [email protected] AND ([email protected] OR [email protected])"
、今までにこのような何かをした誰かがなければならない
sqlParam[0] = 'Douglas'
sqlParam[1] = 'Adam'
sqlParam[2] = 'Adams'
ようsqlParamsのようなsomelikeを返すでしょうか?私はSOとGoogleの両方を本当の成功なしで検索しました。また、オープンソース/フリーコードへのポインタや、検索式をSQLに変換する方法についての良いアイデアを歓迎します。
どのSQLエンジンを使用していますか?答えはデータベースごとに異なります。いくつかは正規表現をサポートし、あるものはサポートしません。 – Johan
SQL Server 2008 R2 – Paaland