Использование 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 + "%'");
...
}


но это не работает. Что происходит? Есть предложения?

678   3  

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 + '%');";

вы могли бы сделать LIKE @SEARCH и в вашем коде C#, do

searchString = "%" + searchString + "%"

Comments

    Ничего не найдено.