在SQL语句中使用 "LIKE "来查询句子中的单词,而不考虑其顺序。

0 人关注

想知道我如何在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 个评论
你必须更精确地说明你想做什么。你是在一个表的一个或多个字段中搜索?你是在搜索一个词还是在搜索文本框中输入的所有词?
我想他们说的是输入多个词并搜索所有的词,可能像搜索引擎一样。至少这是我从句子中得到的信息 :)
VUDS
我有一个句子 "我的狗向每个人吠叫",目前,如果我输入 "我的狗吠叫",它将返回该行,工作正常,但如果我搜索 "我的狗吠叫 "则返回0个结果......我想知道如何让它工作,即使顺序不一样。
如果你发布代码、XML或数据样本, 在文本编辑器中突出这些行,并点击编辑器工具栏上的 "代码样本 "按钮( { } ),以很好的格式和语法突出它!
这就是发明SQL Server的 全文搜索 所要解决的问题。
c#
sql
sql-server-2008
VUDS
VUDS
发布于 2011-07-20
5 个回答
Yiğit Yener
Yiğit Yener
发布于 2011-07-20
0 人赞同

如果你的文本框里有Word1和Word2,你可以把它们分开,像下面这样使用。

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

但你最好定义一个全文搜索并使用CONTAINS来查询。

jasalguero
jasalguero
发布于 2011-07-20
0 人赞同

如果你想搜索多个单词,你可以使用类似的方法。

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

如果你想获得包含所有单词的列,而不是ANY,你可以将OR改为AND。

但仍然不是很有用,因为你必须事先知道你要用多少个词作为论据。

也许你应该使用SQL Server链接的全文搜索功能

VUDS
这是我使用的代码,它只在词的顺序上起作用 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) 。
你能在执行之前展示一下最终查询的例子吗? 如果不知道变量的值,就很难看到。
JohnD
JohnD
发布于 2011-07-20
0 人赞同

你可以用 "bar "列中的 "foo "一词进行搜索。

WHERE Bar LIKE '%foo%'

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

希望这有帮助。

VUDS
好吧,约翰,例如,我有一个句子 "我的狗向每个人吠叫",目前,如果我输入 "我的狗吠叫",它将返回该行,工作正常,但如果我搜索 "我的狗吠叫 "返回0个结果...我想知道如何让它工作,即使顺序不一样。
Nico Huysamen
Nico Huysamen
发布于 2011-07-20
0 人赞同
SELECT    some_field
FROM      some_table
WHERE     some_field
  LIKE '%first_value%'
OR      some_field
  LIKE '%second_value%'