空条件的 If-else SQL

If-else for null condition SQL

我将使用三个示例输入创建实时报告:

  1. 文档开始日期
  2. 文档结束日期
  3. 员工 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 条件。