我有一个搜索,用户可以在其中指定多个搜索条件。在某些条件字段中,他们选择是要搜索特定值还是搜索范围。例如,用户可以在名为"Week ending“的字段上进行搜索。用户可以选择此字段的值是特定日期,还是介于两个日期之间。
每个条件字段都是可选的。
我正在努力寻找一种方法来创建一个SQL查询来支持这样的东西。我所能看到的最简单的方法就是有大量不同的查询来支持每种不同的组合,但这太可怕了,必须有更好的解决方案。
我尝试使用IFNULL和COALESC来做这件事,但是我遇到的问题是如何处理>和=这两个可选的存在。
有什么想法吗?
谢谢。
发布于 2013-09-09 21:13:40
如果您正在使用LINQ-To-SQL或LINQ-To-Entities,则可以使用每个可选搜索字段动态构建LINQ语句。
或者,您可以在将SQL查询字符串传递给数据库之前构建该字符串。然而,这是一个相当过时的方法,而且你不会像LINQ那样得到编译时检查。如果您沿着这条路走,请确保使用SQL参数,而不是将搜索参数附加到查询中。
我真的会尽量避免重复任何查询代码,坚持DRY原则,这样以后你就可以省去很多维护的痛苦了!
https://stackoverflow.com/questions/18698901
复制相似问题