我的应用程序和Access查询向导之间的LIKE行为不同

时间:2014-01-16 12:28:46

标签: c# asp.net ms-access ms-access-2007

我正在从我的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行。如果我删除where条件,则两个结果相同。请帮我查询一下有什么问题。如果有任何其他信息需要请告诉我。

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;
}

1 个答案:

答案 0 :(得分:2)

由于在Access本身运行的查询和从外部应用程序运行的查询之间的LIKE通配符的不同,您将被绊倒。

从Access本身运行查询时,您需要使用星号作为通配符:LIKE '*Ra*'

从外部应用程序(如C#应用程序)运行查询时,您需要使用百分号作为通配符:LIKE '%Ra%'