SQL LIKE 表达式给出空结果

似乎使用 Like 需要一些精确的格式,我不知道。这是代码:


private void DoFilter()

{

    using (connection = new SqlConnection(connectionString))

    using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Customers WHERE CompanyName = @filter + '%'", connection))

    {

        adapter.SelectCommand.Parameters.AddWithValue("@filter", txtFilter.Text.Trim());


        DataTable TCustomers = new DataTable();

        adapter.Fill(TCustomers);


        lstCustomers.DisplayMember = "CompanyName";

        lstCustomers.ValueMember = "Id";

        lstCustomers.DataSource = TCustomers;


    }

}

该代码不会引发任何错误。它只是将 ListBox (lstCustomers) 留空。(txtFilter 是一个TextBox,过滤字符串就在其中)。


宝慕林4294392
浏览 199回答 3
3回答

catspeake

使用like operator而不是=SELECT * FROM Customers WHERE CompanyName like @filter + '%'"

慕码人2483693

'Like' 应该用作(SELECT * FROM Customers WHERE CompanyName LIKE @filter + '%'):private void DoFilter(){    using (connection = new SqlConnection(connectionString))    using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Customers WHERE CompanyName LIKE @filter + '%'", connection))    {        adapter.SelectCommand.Parameters.AddWithValue("@filter", txtFilter.Text.Trim());        DataTable TCustomers = new DataTable();        adapter.Fill(TCustomers);        lstCustomers.DisplayMember = "CompanyName";        lstCustomers.ValueMember = "Id";        lstCustomers.DataSource = TCustomers;    }}

哈士奇WWW

您不是在使用LIKE运算符,而是在使用=运算符。它应该是:using (SqlDataAdapter adapter = new SqlDataAdapter(     "SELECT * FROM Customers WHERE CompanyName LIKE @filter + '%'", connection))按照您编写它的方式,SQL 将匹配一个末尾带有 a 的精确字符串%,因此您不会得到任何结果。
打开App,查看更多内容
随时随地看视频慕课网APP