我有一个数据库表,其中包含电子邮件,代码,姓名。我有一个视图搜索页面,该页面可以只接受电子邮件作为输入,也可以接受代码,或者仅接受姓名或电子邮件,然后接受姓名或电子邮件和代码,或者接受电子邮件,姓名,代码或什么都不做。因此,无论哪种搜索条件,我都需要从数据库返回相关的行。如何管理查询?有什么建议吗?有没有最佳做法?
注意:实际上,我有三个表,从那里我可以通过联接查询获得那些数据。
谢谢。
答案 0 :(得分:0)
典型方法是:
where (? is null or email = ?) and
(? is null or code = ?) and
(? is null or name = ?)
这需要将每个参数传递两次。因此,这是使用命名参数的一个很好的理由:
where (:email is null or email = :email) and
(:code is null or code = :code) and
(:name is null or name = :name)