提问人:Stay cool 提问时间:4/24/2023 最后编辑:GMBStay cool 更新时间:4/24/2023 访问量:68
如何在SQL中使用IF else条件?
How to use IF else condition in SQL.?
问:
我从用户那里有两个遗嘱参数(非强制性),比如start_date和end_日期。 情况 1 :如果用户没有给出 bothe 值,query 会获取值 案例 2:用户给出开始时间段,然后查询大于或等于开始日期的提取值 案例 3:用户同时提供两者,然后在记录之间查询 fetch 案例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价值...
答:
4赞
GMB
4/24/2023
#1
该语句是一种流控制结构,在过程代码中起作用,而不是在查询中起作用。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
评论
0赞
Barmar
4/24/2023
问题中的查询使用 ,而不是 。它可能来自一个 Web 表单,它没有发送方式,但您可以将字段留空。""
NULL
NULL
3赞
Littlefoot
4/24/2023
...这在 Oracle 中无效,@Barmar。但是,两个连续的单引号表示一个空字符串,但是 - 同样在 Oracle 中 - 它等效于 NULL。正如人们评论的那样,这取决于 OP 真正使用哪个数据库。如果是 Oracle,那么 GMB 就把它做好了。
0赞
Stay cool
4/24/2023
我给“ ”,以防用户不给值...此时参数为空
评论