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

本文关键字:单词 句子 顺序 不考虑 查询 使用 quot LIKE 语句 SQL | 更新日期: 2023-09-27 18:03:06

想知道我如何在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); 

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

如果你的文本框中有Word1和Word2,你可以像下面这样分割它们。

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

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

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

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

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

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

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

您可以使用以下命令搜索栏"bar"中的单词"foo":

WHERE Bar LIKE '%foo%'

这是你想要的吗?如果不是,你能举个例子吗?

希望有帮助,

约翰

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

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

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

等等。使用for循环。将WHERE子句与SQL查询的其余部分连接并执行。