这可能是一个已存在了20年的问题,但无论如何我都会问。我有一个有多个搜索选项的屏幕。有些可以合并。有些是独家的。
前:
按名字和姓氏搜索
OR
按年龄搜索
处理此问题的最佳方法是什么?我是否可以在应用程序中处理此问题,并使用一大堆if / else来调用许多函数中的1个或1个函数。做一系列if / else只是看起来过时了。是不是有更有效的方法?
答案 0 :(得分:2)
我建议使用构建器将各种谓词收集到对象中,然后将该对象传递给生成相关查询的函数/方法。
SQLORM Java library使用此方法以面向对象的方式构建SQL查询。 This page提供了一个很好的讨论,使用一个带有很多if-else的方法来构建查询字符串的优缺点,而不是构建器方法。
答案 1 :(得分:0)
我会验证哪些字段可以在前端一起完成。
对于存储过程,主要目标是没有带有连接的sql。
在sproc中,我倾向于使用一串isnull语句来使用param或字段值,如果param为null。
正如你所说,它不是一个新技巧,但它的工作原理比每次执行生成新的sql要快得多。它还具有易于预测的执行计划。