如何在 SQL 中使用 IF else 条件?

问题描述 投票:0回答:1

我有两个来自用户的遗嘱参数(非强制性),比如 start_date 和 end_date。 情况 1:如果用户不提供两个值,查询将获取值 情况 2:用户提供开始时间,然后查询大于或等于开始日期的获取值 案例 3:用户同时提供,然后在记录之间查询获取 情况 4:用户只给出结束日期,然后查询需要获取小于或等于结束日期的值

我的查询

select Reg_date,employees,years from employee 
Where 
IF start_date != ""
  IF end_date != ""
     Where Reg_date >= start_date and Reg_date <= end_date
  Else
     Where Reg_date >= start_date
  END
ELSE
 IF end_date != ""
   Where Reg_date <= End_date
 End
END

你能请任何人使用我使用的语法是否正确..我需要在服务器中执行此操作。所以我无法在任何 test_env 中运行。用户可以提供 start_date 和 end_date 值...

sql oracle if-statement where-clause
1个回答
2
投票

IF
语句是一个流程控制结构,它在过程代码中发挥作用,而不是在查询中。

在这里,您通常会在查询的

where
子句中使用布尔逻辑。

where (:start_date is null or reg_date >= :start_date)
  and (:end_date   is null or reg_date <= :end_date  )

... 其中

:start_date
:end_date
代表查询的参数。

我不确定在你的伪代码中使用空字符串来表示“缺失”参数;可能人们会期望

null
值(字符串和日期是两种不同的数据类型)。

© www.soinside.com 2019 - 2024. All rights reserved.