如何选择列包含字符串任何单词的所有行

本文关键字:任何单 字符串 包含 何选择 选择 | 更新日期: 2023-09-27 18:33:51

我首先问这个问题 我希望选择包含数组中任何元素的所有行虽然我目前的问题几乎相同,但它有一个完全不同的目的,所以我担心答案可能会有所不同,这会掩盖前一个问题。

我正在研究搜索引擎类型的东西。 我需要搜索存储在数据库中的标题,以查看它是否包含搜索文本框中的任何单词。 然后,我计划遍历每一行,计算匹配的单词数并相应地对结果进行排名。 我相信到目前为止,这已经做了很多次了。 我似乎不知道该怎么做,没有

select * from table

然后在 C# 中对其进行排序

如何选择列包含字符串任何单词的所有行

SQL

Server中的一种方式是

像这样在临时表中推送单词

DECLARE @SearchWords TABLE (
  word varchar(30) )
INSERT INTO @SearchWords
        (word)
VALUES  ('Jack')
       ,('Pontiac')
       ,('Bloggs');

而不是将此表与实际表联接

SELECT a.* FROM table_data a
INNER JOIN @SearchWords b on a.record_desc like '%' + b.word + '%'

你可以尝试这样的事情:

SELECT * FROM table WHERE name LIKE '%word1%' OR name LIKE '%word2%';

%标志类似于典型搜索中的*

要获取字符串并为多个单词创建此查询,您可以执行以下操作:

String inputString = "hello my friend";
String[] wordlist = inputString.split(" ");
String query = "SELECT * FROM table WHERE 0=0 ";
for(String word : wordlist) {
    query += "OR name LIKE '%" + word + "%' "; 
}

字符串末尾的空格很重要,不要忘记这些! 此外,您可能希望在拆分字符串之前对其进行清理(删除额外的标点符号,甚至可能删除"a"或"the"或"to"等单词)