sql - Oracle SQL Where 子句
问题描述
我有一个查询:
select * from students stud
where stud.grade <= :grd
比如我在 :grd 中输入了 80,这会显示所有成绩为 80 及以下的学生。
如果我在 :grd 中没有输入任何内容,我想要的是显示所有学生。
有没有办法做到这一点?谢谢 :)
解决方案
您可以简单地使用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;
干杯!!