특정 테이블 (SQL)의 데이터를 검색하는 검색 페이지가 필요한 asp.net 웹 응용 프로그램이 있습니다. 오늘은 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