首页 > 解决方案 > Oracle SQL Where 子句

问题描述

我有一个查询:

select * from students stud
where stud.grade <= :grd 

比如我在 :grd 中输入了 80,这会显示所有成绩为 80 及以下的学生。

如果我在 :grd 中没有输入任何内容,我想要的是显示所有学生。

有没有办法做到这一点?谢谢 :)

标签: sqloracle

解决方案


您可以简单地使用coalesce如下

select * from students 
where stud.grade <= coalesce(:grd,stud.grade);

case when如下使用:

select * from students 
where stud.grade <= 
case when :grd is null 
     then stud.grade 
     else :grd end;

干杯!!


推荐阅读