использование параметра в SQL с ключевым словом LIKE - PullRequest
0 голосов
/ 12 ноября 2009

из моей C # -программы я получаю доступ к базе данных SQL Server 2008. У меня есть таблица с полнотекстовым индексом, и я хочу найти проиндексированную запись:

SELECT page_id FROM page_categories WHERE page_title LIKE @title

Когда в заголовке нет заголовков, все нормально, но если заголовок содержит заголовки, запрос не выполняется. Он не выдает ошибку, но возвращенный набор записей закрыт

command.ChangeParameter("title", title);

using (System.Data.IDataReader reader = command.ExecuteQuery())
{
  while (reader.Read())
    resultSet.Add(reader.GetInt32(0));

  reader.Close();
}

Я не могу заключить параметр @title в '', потому что тогда Command-Object будет интерпретировать @title как строку, а не как параметр.

SELECT page_id FROM page_categories WHERE page_title LIKE '@title'

Кто-нибудь знает, как я могу использовать параметр для запроса LIKE, когда параметр title может содержать пробелы?

Спасибо заранее, Frank

Ответы [ 5 ]

2 голосов
/ 12 ноября 2009

вместо ответа СК, вы можете сделать это:

command.ChangeParameter("title", "%"+title.Trim()+"%");
2 голосов
/ 12 ноября 2009

Вы можете сделать это:

SELECT page_id 
FROM page_categories 
WHERE page_title LIKE '%' + @title + '%'
1 голос
/ 12 ноября 2009
SELECT page_id 
FROM page_categories 
WHERE page_title LIKE '%' + @title + '%'

% представляет дикий символ, похожий на более распространенный * вне SQL (любая строка от нуля или более символов).

Вы должны убедиться, что в коде вызова параметр обрезан с помощью .Trim().

Здесь - полный справочник возможных подстановочных знаков.

1 голос
/ 12 ноября 2009

Вы не используете LIKE для поиска по индексу свободного текста. Вы используете CONTAINS или FREETEXT или аналогичные.

0 голосов
/ 12 ноября 2009

Я добавляю одинарные кавычки к запросу:

SELECT page_id FROM page_categories WHERE page_title LIKE '' + @title + ''

Если я попробую это с «Contains» (CONTAINS (page_title, '' + @tile + '')), я получу синтаксическую ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...