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

时间:2012-05-09 18:53:24

标签: c# sql sql-server

我开始问这个问题I wish to Select all rows which contain any element from an array 虽然我目前的问题几乎是相同的,但是它有一个完全不同的目的,因此我担心答案可能会有所不同,这会使之前的问题变得模糊不清。

我正在研究搜索引擎类型的东西。我需要搜索存储在数据库中的标题,以查看它是否包含搜索文本框中的任何单词。我计划迭代这些行中的每一行,计算匹配的单词数量并相应地对结果进行排名。我相信这已经做了很多次了。我似乎无法弄清楚如何在没有

的情况下做到这一点
select * from table

然后在c#

中对其进行排序

2 个答案:

答案 0 :(得分:4)

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 + '%'

答案 1 :(得分:2)

您可以尝试这样的事情:

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”等字样。)

相关问题