Использование «LIKE» в выражении SQL для запроса слов в предложении независимо от порядка - PullRequest
0 голосов
/ 20 июля 2011

Хотелось бы узнать, как я могу использовать LIKE в операторе SQL, чтобы он возвращал слова в предложении, которое я набрал в текстовом поле поиска, независимо от порядка их ввода.

Это код, который я использую, и он работает, только если слова в порядке

StringBuilder mystringBuilder = new StringBuilder(strSearch);
mystringBuilder.Replace(" ", "%"); 

QueryClause q = new QueryClause("AND", "IssueDescription", "LIKE", "%" + strSearch + "%", SqlDbType.VarChar, false); 
colQueryClauses.Add(q); 

q = new QueryClause("OR", "IssueTitle", "LIKE", "%" + mystringBuilder + "%", SqlDbType.VarChar, false); 
colQueryClauses.Add(q); 

Ответы [ 5 ]

3 голосов
/ 20 июля 2011

Если в вашем текстовом поле есть Word1 и Word2, вы можете разделить их и использовать, как показано ниже.

SELECT * FROM Table WHERE Column LIKE '%Word1%' AND Column LIKE '%Word2%'

Но вам лучше определить полнотекстовый поиск и использовать CONTAINS для запроса.

1 голос
/ 20 июля 2011

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

SELECT
  *
FROM
  table
WHERE
   (Column LIKE '%word1%') OR
   (Column LIKE '%word2%') OR
   (Column LIKE '%word3%')

Вы можете изменить ИЛИ на И, если вы хотите получить столбец, содержащий ВСЕ слова вместо ЛЮБОГО

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

Возможно, вам следует использовать функцию полнотекстового поиска из SQL Server ссылка

0 голосов
/ 20 июля 2011

В C # разбейте поисковое предложение на слова (используя пробел в качестве разделителя).Затем создайте строку, которая будет вашим предложением WHERE, например:

"WHERE searchColumn LIKE '% " + splitString[0] + " %' AND searchColumn LIKE '% " + splitString[1] + " %'"

и так далее.Используйте для цикла.Соедините предложение WHERE с остальной частью SQL-запроса и выполните.

0 голосов
/ 20 июля 2011
SELECT    some_field
FROM      some_table
WHERE     some_field
  LIKE    '%first_value%'
  OR      some_field
  LIKE    '%second_value%'
  ...
0 голосов
/ 20 июля 2011

Вы можете найти слово «foo» в столбце «bar», используя:

WHERE Bar LIKE '%foo%'

Это то, что вы ищете?Если нет, можете ли вы привести пример?

Надеюсь, это поможет,

Джон

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