在SQL语句中使用“LIKE”来查询句子中的单词,而不管顺序如何

时间:2011-07-20 09:47:53

标签: c# sql sql-server-2008

想知道如何在SQL语句中使用LIKE,以便它返回我在搜索文本框中输入的句子中的单词,而不管它们的输入顺序如何。

这是我使用的代码,只有在单词按顺序

时才有效
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 个答案:

答案 0 :(得分:3)

如果你的文本框中有Word1和Word2,你可以拆分它们并使用如下所示。

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

但您最好定义full text search并使用CONTAINS进行查询。

答案 1 :(得分:1)

如果您想搜索多个单词,可以使用以下内容:

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

如果要获取包含所有单词而不是ANY

的列,可以为AND更改OR

但仍然不是很有用,因为你必须事先知道你将使用多少单词作为参数。

也许您应该使用SQL Server link

中的全文搜索功能

答案 2 :(得分:0)

您可以使用以下方法在“bar”栏中搜索“foo”一词:

WHERE Bar LIKE '%foo%'

这就是你要找的东西吗?如果没有,你能举个例子吗?

希望有所帮助,

约翰

答案 3 :(得分:0)

SELECT    some_field
FROM      some_table
WHERE     some_field
  LIKE    '%first_value%'
  OR      some_field
  LIKE    '%second_value%'
  ...

答案 4 :(得分:0)

在C#中,将搜索句子拆分为单词(使用空格字符作为分隔符)。然后创建一个将成为WHERE子句的字符串,如下所示:

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

等等。使用for循环。用其余的SQL查询Concat WHERE子句并执行。