2011-11-04 4 views
0

Я пытаюсь выполнить поиск подстроки из базы данных доступа 2010 в winforms.Запрос доступа с подстановочным знаком

command.Parameters.AddWithValue("@searchTerm", searchTerm); 
command.CommandText = "SELECT [OA_Name] FROM [Operating_Authority_Table] WHERE [OA_Name] = [@%searchTerm%]"; 

Я пытался сделать полный поиск строки и в состоянии сделать это, но я не могу получить какие-либо успешные поиски, когда я изменить срок быть подстроки.

Я реализую символ подстановки неправильно?

ответ

4

Попробуйте что-то вроде этого:

command.Parameters.AddWithValue("@searchTerm", searchTerm); 
command.CommandText = "SELECT [OA_Name] FROM [Operating_Authority_Table] WHERE [OA_Name] = '%' + @searchTerm + '%'"; 
+0

Хммм это работает! Спасибо! – user776914

+0

если он работал, не стесняйтесь отмечать его как ответ =) –

+0

Кстати, люди, которые могут иметь подобные проблемы, я попытался и нашел, что «%» работает, «*» не работает. – user776914

1

попробуйте использовать SQL LIKE Operator

command.CommandText = "SELECT [OA_Name] FROM [Operating_Authority_Table] WHERE [OA_Name] LIKE '%"+ searchTerm +"%'"; 
+0

Я использовал оба = и LIKE, и оба работали для меня, когда я пытался выполнить полное соответствие строк. – user776914

1

Принятая ответ:

"...WHERE [OA_Name] = '%' + @searchTerm + '%'"; 

Это будет относиться к % символов в текстовых литералов.

Я был немного удивлен, потому что слово «подстановочный знак» в заголовке вопроса предполагает, что целью является сопоставление шаблонов. Если это действительно так, я бы рекомендовал заменить оператора равенства = оператором ALIKE, например.

"...WHERE [OA_Name] ALIKE '%' + @searchTerm + '%'"; 

Проблема с оператором LIKE является то, что доступ к базе данных двигателя (ACE, Jet, что угодно) использует различные символы подстановки в зависимости от так называемой ANSI Query Mode. Предположительно, вы используете ANSI-92 Query Mode, используя SqlOleDb (но знаете ли вы?)

Преимущество ALIKE заключается в том, что используются одинаковые подстановочные знаки «Стандарт», независимо от режима запросов ANSI, % для нескольких символов и _ для одного символа.

Смежные вопросы