Tengo una aplicación web asp.net que necesita una página de búsqueda que busque datos en una tabla específica (SQL). Hoy en día sólo tiene un simple consulta como, useing sql establecieron los parámetros:Búsqueda SQL con operadores lógicos
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
}
Ahora tengo que añadir la opción de utilizar operadores lógicos para la búsqueda.
Así, en el cuadro de texto que un usuario podría buscar cosas como
Adam OR Adams
James AND NOT Jame
Douglas AND (Adam OR Adams)
Adición de indexación de texto completo para la tabla no es una opción preferida ya que yo no controlo el modelo de datos.
Estoy buscando un método para interpretar las consultas de texto y convertirlo en una declaración SQL con el número apropiado de SqlParams.
searchexpression = "Douglas AND (Adam OR Adams)"
MakeSearchQuery(searchexpression, out sqlquery, out SqlParam[] params)
volvería somelike como
sqlquery = "SELECT someFields FROM table WHERE [email protected] AND ([email protected] OR [email protected])"
Y un sqlParams como
sqlParam[0] = 'Douglas'
sqlParam[1] = 'Adam'
sqlParam[2] = 'Adams'
Ahora tiene que haber alguien que ha hecho algo como esto antes? He buscado SO y Google sin ningún éxito real. Y sugerencias para código abierto/código libre o una buena idea sobre cómo convertir la expresión de búsqueda en SQL es bienvenido.
Con qué motor SQL trabajas, la respuesta difiere según la base de datos. algunos admiten expresiones regulares, otros no. – Johan
SQL Server 2008 R2 – Paaland