0

我有一个搜索,用户可以在其中指定多个搜索条件。在某些条件字段中,他们可以选择是否要搜索特定值或范围。例如,用户可以在名为“Week ending”的字段上进行搜索。用户可以选择该字段的值是特定日期,还是介于两个日期之间。

每个条件字段都是可选的。

我正在努力寻找一种方法来创建一个 SQL 查询来支持这样的事情。我能看到的最简单的方法是加载大量支持每种不同组合的不同查询,但这太可怕了,必须有更好的解决方案。

我尝试使用 IFNULL 和 COALESC 执行此操作,但遇到的问题是如何处理 > 和 = 的可选存在。

有任何想法吗?

谢谢。

4

1 回答 1

0

如果您使用 LINQ-To-SQL 或 LINQ-To-Entities,则可以使用每个可选搜索字段动态构建 LINQ 语句。

或者,您可以在将 SQL 查询字符串传递给数据库之前构建它。虽然这是一种相当过时的方法,但您不会像 LINQ 那样进行编译时检查。如果您确实沿着这条路线走,请务必使用 SQL 参数,而不是将搜索参数附加到您的查询中。

我真的会尽量避免重复任何查询代码,坚持DRY原则,以后你会省去很多维护的痛苦!

于 2013-09-09T13:13:40.007 回答