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

но это не работает. Что происходит не так? Какие-либо предложения?

Вы хотите:

 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 # сделать

 searchString = "%" + searchString + "%" 
  • TSQL Как запрос в запросе «in»
  • Как использовать подобный оператор для поиска паттернов, где часть операнда является параметром
  • SQL-запрос для проверки `like '%' массива строк '%'` из другого набора результатов.
  • Переменная Temp, используемая в select Query
  • Запрос с инструкцией LIKE для любого из слов, а не целых
  • как найти этот шаблон в sql-сервере?
  • SQL WHERE Like Clause не возвращает все результаты
  • Как связать% и имя столбца в инструкции LIKE
  • Как с правильным значением с подстановочным процентом
  • Оператор SQL LIKE не показывает результат, когда он должен
  • Запрос, чтобы найти столбцы, которые заканчиваются символом процента%
  • Давайте будем гением компьютера.