搜索最小列

时间:2016-03-15 12:08:10

标签: sql sql-server sql-server-2008 join subquery

支持用户从ASP.NET中的屏幕中选择10列进行搜索

我们需要搜索数据库中匹配的最少8列

如何编写sql查询以匹配10个中的任何8列

我们需要匹配10个匹配列中的8个

1 个答案:

答案 0 :(得分:0)

您需要表达式,它会显示匹配的列数,然后将其与需要匹配的列数进行比较。

这样的事情:

where
-- How many columns matched? 
-- Score 1 for each matching column
0
+ case when column1 = @search1 then 1 else 0 end
+ case when column2 = @search2 then 1 else 0 end
+ case when column3 = @search3 then 1 else 0 end
+ case when column4 = @search4 then 1 else 0 end
+ case when column5 = @search5 then 1 else 0 end
+ case when column6 = @search6 then 1 else 0 end
+ case when column7 = @search7 then 1 else 0 end
+ case when column8 = @search8 then 1 else 0 end
+ case when column9 = @search9 then 1 else 0 end
+ case when column10 = @search10 then 1 else 0 end

>= 8

您可以概括这种方法,为不同的列提供不同的分数。

请注意,此方法不会在任何搜索列上使用索引。

但是,如果有多个列具有索引,则可以通过使用它们来提高性能。 (要匹配十列中的八列,使用索引,至少三列必须有索引)。