在三列的表中搜索,其中搜索条件可能只是一列或两列或三列?

时间:2018-09-21 19:06:48

标签: mysql sql database oracle

我有一个数据库表,其中包含电子邮件,代码,姓名。我有一个视图搜索页面,该页面可以只接受电子邮件作为输入,也可以接受代码,或者仅接受姓名或电子邮件,然后接受姓名或电子邮件和代码,或者接受电子邮件,姓名,代码或什么都不做。因此,无论哪种搜索条件,我都需要从数据库返回相关的行。如何管理查询?有什么建议吗?有没有最佳做法?

注意:实际上,我有三个表,从那里我可以通过联接查询获得那些数据。

谢谢。

1 个答案:

答案 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)