我的应用程序和Access查询向导之间有不同的LIKE行为
我执行以下查询从我的Web应用程序和访问2007年查询向导。 我得到了两个不同的结果。
SELECT R.Rept_Name, D.Dist_Name,S.State_Name FROM (tblReporter AS R LEFT JOIN tblDist AS D ON R.Dist_Id=D.Dist_Id) LEFT JOIN tblState AS S ON S.State_Id=R.State_Id WHERE R.Rept_Name LIKE '*Ra*' ORDER BY R.Rept_Name;
从Web应用程序的结果是0行,从查询向导2行。如果我删除条件比两个结果是相同的。 请帮我查询有什么问题。 如果有其他信息需要请告诉我。
Web应用程序代码…
public DataTable getRept(string rept, string mobno) { DataTable dt = new DataTable(); using (OleDbConnection conn = new OleDbConnection(getConnection())) { using (OleDbCommand cmd = conn.CreateCommand()) { cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT R.Rept_Name, D.Dist_Name,S.State_Name FROM (tblReporter AS R LEFT JOIN tblDist AS D ON R.Dist_Id=D.Dist_Id) LEFT JOIN tblState AS S ON S.State_Id=R.State_Id WHERE R.Rept_Name LIKE '*" + rept + "*' ORDER BY R.Rept_Name;"; conn.Open(); using (OleDbDataReader sdr = cmd.ExecuteReader()) { if (sdr.HasRows) dt.Load(sdr); } } } return dt; }
您在Access自身中运行的查询与从外部应用程序运行的查询之间LIKE通配符字符的差异而绊倒了您。
从Access内部运行查询时,需要使用星号作为通配符: LIKE '*Ra*'
。
从外部应用程序(如C#应用程序)运行查询时,需要使用百分号作为通配符: LIKE '%Ra%'
。