【发布时间】:2012-06-16 08:32:33
【问题描述】:
基本上我必须从 SQL 数据库构建项目列表,但是用户可以选择对 7 个过滤器的任意组合进行过滤,也可以选择要排序的列以及按方向排序。
正如您可以想象的那样,这会以大量不同的组合进行编码,并且数据集非常大,所以我想避免在应用程序中这样做。
到目前为止,在我的存储过程中我已经尝试过:
构建查询字符串,虽然这非常简单易懂,但它会使应用程序容易受到 SQL 注入,因此我宁愿避免这种情况。
使用一组
IF ELSE语句来运行正确的参数化 SQL,但这很快就会变成一棵巨大的树,维护起来将是一场噩梦。
我不是第一个需要这样的解决方案的人,一定有比上述更好的方法吗?另外一个附带问题是,除了做很多IFs 之外,还有一个好方法可以以参数化的方式按方向排序吗?
【问题讨论】:
-
如果您可以将过滤器减少到
and (fld1 = @filter1 or @filter1 is null),您应该阅读此sommarskog.se/dyn-search-2008.html
标签: sql sql-server sql-order-by filtering