如何检查参数是否为空并在查询中检查它

how check if parameter are null and ckecks it in the query

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

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

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

假设有一个table empolyes(id primary key, registration_date),假设我输入了两个日期,我必须如何解决我的问题?

我建议在 where 子句中使用以下代码行:

(...) NVL(data1, data3) 和 NVL(data2, data3) 之间的数据 3

编辑:我相信,在处理日期时,处理 date3 等于 date1(或分别为 date2)的情况是强制性的,而不是可选的,并且 BETWEEN AND 也处理这些情况。

你可以明确地这样写:

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')

个人觉得第一个版本更清晰。