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

hrirmatl  于 2023-04-29  发布在  Oracle
关注(0)|答案(1)|浏览(246)

我有两个来自用户的will参数(非强制性),比如start_date和end_ date。情况1:如果用户没有给予这两个值,则query将获取值情况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值。..

dkqlctbz

dkqlctbz1#

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值(字符串和日期是两种不同的数据类型)。

相关问题