SQL LIKE 表达式给出空结果
SQL LIKE expression gives empty result
似乎使用 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,过滤字符串在里面)
使用like operator
代替=
SELECT * FROM Customers WHERE CompanyName like @filter + '%'"
您没有使用 LIKE
运算符,您使用的是 =
运算符。
应该是:
using (SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT * FROM Customers WHERE CompanyName LIKE @filter + '%'", connection))
按照您编写的方式,SQL 将匹配末尾带有 %
的精确字符串,因此您不会得到任何结果。
'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;
}
}
似乎使用 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,过滤字符串在里面)
使用like operator
代替=
SELECT * FROM Customers WHERE CompanyName like @filter + '%'"
您没有使用 LIKE
运算符,您使用的是 =
运算符。
应该是:
using (SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT * FROM Customers WHERE CompanyName LIKE @filter + '%'", connection))
按照您编写的方式,SQL 将匹配末尾带有 %
的精确字符串,因此您不会得到任何结果。
'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;
}
}