首页 > 解决方案 > 如何检查参数是否为空并在查询中检查它

问题描述

假设输入中有 3 个日期,data1 和 data2 是间隔,data3 是通用输入日期。data1 和 data2 可以为空,data3 不为空。所以我可以有 3 种情况:

  1. 数据 3 > 数据 1(数据 2 为空)
  2. 数据 3 < 数据 2(数据 1 为空)
  3. 数据1 < 数据3 < 数据2

如果使用不同的查询,我不想创建不同的。我想创建一个处理这些情况的查询。

假设有一个表 empolyes(id primary key, registration_date),假设我有两个日期输入,我必须怎么做才能解决我的问题?

标签: sqlpostgresqljdbcwhere

解决方案


你可以明确地写这个:

where (data3 > date1 or date1 is null) and
      (date3 < date2 or date2 is null)

您还可以使用某种形式的coalesce(),例如:

where date3 > coalesce(date1, date3 - interval '1 day') and
      date3 < coalesce(date2, date3 + interval '1 day')

就个人而言,我发现第一个版本更清晰。


推荐阅读