我有以下代码:
const string Sql = @"select distinct [name] from tblCustomers left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId where (tblCustomer.Name LIKE '%@SEARCH%' OR tblCustomerInfo.Info LIKE '%@SEARCH%');"; using (var command = new SqlCommand(Sql, Connection)) { command.Parameters.AddWithValue("@SEARCH", searchString); ... }
这不起作用,我也试过这个:
const string Sql = @"select distinct [name] from tblCustomers left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId where (tblCustomer.Name LIKE @SEARCH OR tblCustomerInfo.Info LIKE @SEARCH );"; using (var command = new SqlCommand(Sql, Connection)) { command.Parameters.AddWithValue("@SEARCH", "'%" + searchString + "%'"); ... }
但这不行.出了什么问题?有什么建议?
你想要的是:
tblCustomerInfo.Info LIKE '%' + @SEARCH + '%'
(或编辑参数值以包含%在第一位).
否则,您要么(第一个样本)搜索文字 "@SEARCH"(不是arg-value),要么在查询中嵌入一些额外的引号(第二个样本).
在某些方面,使用TSQL可能更容易LIKE @SEARCH
,并在调用者处理它:
command.Parameters.AddWithValue("@SEARCH","%" + searchString + "%");
这两种方法都应该有效.