Использование SqlParameter в SQL like предложение не работает
у меня есть следующий код:
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 + "%'");
...
}
но это не работает. Что происходит? Есть предложения?
3 ответов:
ты хочешь:
tblCustomerInfo.Info LIKE '%' + @SEARCH + '%'(или изменить значение параметра, чтобы включить % в первую очередь).
в противном случае, вы либо (первый образец) ищем литерал "@SEARCH " (не arg-значение), или вы вставляете некоторые дополнительные кавычки в запрос (второй пример).
в некотором смысле, это может быть проще иметь TSQL просто использовать
LIKE @SEARCH, и обрабатывать его на вызывающего абонента: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%');";используйте этот код:
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 + '%');";
Comments