我有接收用於動態過濾結果集或通過對於每個參數可以爲0(對所有項目)SQL數據過濾方法
create proc MyProc
@Parameter1 int,
@Parameter2 int,
@Paremeter3 int
as
select * from My_table
where
1 = case when @Parameter1 = 0 then 1 when @Parameter1 = Column1 then 1 else 0 end
and
1 = case when @Parameter2 = 0 then 1 when @Parameter2 = Column2 then 1 else 0 end
and
1 = case when @Parameter3 = 0 then 1 when @Parameter3 = Column3 then 1 else 0 end
return
的值非零3個參數的存儲過程用於匹配特定列的項目。
我可能有20個以上的參數(示例中只有3個)。有一種更優雅的方法可以在數據庫變大時擴展嗎?
看看Gail Shaw的博客文章[Catch-all queries](http://sqlinthewild.co.za/index.php/2009/03/19/catch-all-queries/)。 – 2010-11-29 20:48:28