空条件的 If-else SQL
If-else for null condition SQL
我将使用三个示例输入创建实时报告:
- 文档开始日期
- 文档结束日期
- 员工 ID
这些是 SQL table 文档数据中的 3 行。
我要复现的是:
如果用户没有在 "Emp ID" 字段中输入任何值,它应该显示所有 "Document Start Date" 和 "Document End Date"。否则,应仅显示对应于 "Emp ID" 的值。
可能很简单,但我仍然需要查询。
使用 OR
并将值传递给查询两次。
在通用查询代码中(不知道 livelink 是如何调用的)
SELECT * FROM DOCUMENT
WHERE CREATED_DATE BETWEEN $startDate AND $endDate
AND (EMP_ID = $empId OR $empId IS NULL)
也许这可能是一个解决方案:
-- should work perfectly
select *
from DocumentData
where
case
when :emp_id is null then 1 -- attention :emp_id introduced in stead of emp_id
when emp_id = :emp_id then 1
else 0
end = 1
:emp_id
应该是来自应用程序的变量(用户正在更改的字段)。 case when
语句中的 1
作为 true
条件。
我将使用三个示例输入创建实时报告:
- 文档开始日期
- 文档结束日期
- 员工 ID
这些是 SQL table 文档数据中的 3 行。
我要复现的是:
如果用户没有在 "Emp ID" 字段中输入任何值,它应该显示所有 "Document Start Date" 和 "Document End Date"。否则,应仅显示对应于 "Emp ID" 的值。
可能很简单,但我仍然需要查询。
使用 OR
并将值传递给查询两次。
在通用查询代码中(不知道 livelink 是如何调用的)
SELECT * FROM DOCUMENT
WHERE CREATED_DATE BETWEEN $startDate AND $endDate
AND (EMP_ID = $empId OR $empId IS NULL)
也许这可能是一个解决方案:
-- should work perfectly
select *
from DocumentData
where
case
when :emp_id is null then 1 -- attention :emp_id introduced in stead of emp_id
when emp_id = :emp_id then 1
else 0
end = 1
:emp_id
应该是来自应用程序的变量(用户正在更改的字段)。 case when
语句中的 1
作为 true
条件。