有没有办法根据单词数创建搜索?
例如,如果我搜索car
和wheel
,它会创建像
select * from table
where
(word is like @word1)
and (word is like @word2)
其中@ word1为car
,@ word2为wheel
。
它可以是任意数量的单词,因此这应该是动态的。
感谢。
答案 0 :(得分:1)
假设它确实是您要搜索的单词,SQL Server内置全文搜索(http://msdn.microsoft.com/en-us/library/ms142571.aspx) - 它一直存在于至少8年。这并不完美 - 你可以为Lucene做出更好的理由 - 但如果你的需求很简单,那肯定能胜任。
这也意味着您可以使用现成的功能进行文本搜索,例如“模糊”匹配。
由于您没有足够的代码来编写,您将避免伪代码中的错误 -
(word is like @word1)
and (word is like @word2)
如果word1和word2相同,只会产生结果...
答案 1 :(得分:1)
试试这个,@ string可以动态地包含你想要的所有单词。它只会找到@table中存在所有单词的行:
declare @wordtable table(word varchar(20))
declare @table table(word varchar(500))
insert @wordtable values('car')
insert @wordtable values('wheel')
insert @table values('carwheel')
insert @table values('car')
insert @table values('wheel')
insert @table values('wheelcat')
select * from @table t
where not exists (select 1 from @wordtable where t.word not like '%' + word + '%')
“包含”可能会更好。但这是解决问题的一种不错的方式。
答案 2 :(得分:0)
这将非常缓慢且无法扩展。 你为什么不考虑使用像Lucene这样的东西。
答案 3 :(得分:0)
我会考虑上面所说的,但是如果你仍然想为此编写sql,你可以试试CHARINDEX函数
declare @searchTerms varchar(100) select @searchTerms = 'WORD1,WORD2,GIRLS,BOYS' -- some list select Field1, Field2 , Field3 , Field4 from SomeTable where CHARINDEX( ',' + Field1 + ',', ',' + @searchTerms + ',' , 0 ) > 0
因此,如果您愿意,您的searchTerms,Table和Field可以替换为变量,然后构建一个sql语句然后执行