sql - 如何检查参数是否为空并在查询中检查它
问题描述
假设输入中有 3 个日期,data1 和 data2 是间隔,data3 是通用输入日期。data1 和 data2 可以为空,data3 不为空。所以我可以有 3 种情况:
- 数据 3 > 数据 1(数据 2 为空)
- 数据 3 < 数据 2(数据 1 为空)
- 数据1 < 数据3 < 数据2
如果使用不同的查询,我不想创建不同的。我想创建一个处理这些情况的查询。
假设有一个表 empolyes(id primary key, registration_date),假设我有两个日期输入,我必须怎么做才能解决我的问题?
解决方案
你可以明确地写这个:
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')
就个人而言,我发现第一个版本更清晰。
推荐阅读
- java - 如何使用构建器模式通过表单创建对象?
- android - 颤振 - 使用颤振插件共享图像给我一个黑屏?
- ios - 在运行时更改 iOS 13 中的根视图控制器
- python - Sklearn 无法正确导入 plot_confusion_matrix
- websphere - 运行 IBMMQ 时出现此错误?
- jsp - 如何在 JSTL 中循环 LinkedHashMap 列表并获取键和值
- javascript - React Native 中的 Arraylist 添加/删除视图
- c# - 在 microsoft graph 中是否有互操作的替代方法?
- swift - 为什么我会收到此 ViewType is not convertible 错误?
- html - ui-select angularjs中的on-select函数调用非常慢