我开始问这个问题I wish to Select all rows which contain any element from an array 虽然我目前的问题几乎是相同的,但是它有一个完全不同的目的,因此我担心答案可能会有所不同,这会使之前的问题变得模糊不清。
我正在研究搜索引擎类型的东西。我需要搜索存储在数据库中的标题,以查看它是否包含搜索文本框中的任何单词。我计划迭代这些行中的每一行,计算匹配的单词数量并相应地对结果进行排名。我相信这已经做了很多次了。我似乎无法弄清楚如何在没有
的情况下做到这一点select * from table
然后在c#
中对其进行排序答案 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”等字样。)