Предложение Oracle SQL Where - PullRequest
       1

Предложение Oracle SQL Where

1 голос
/ 09 октября 2019

У меня есть запрос:

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

Например, я ввел 80 в: grd, здесь отображаются все учащиеся, которые имеют класс 80 и ниже.

То, что я хотел, этопоказать всех студентов, если я ничего не ввел в: grd.

Есть ли способ сделать это? Спасибо:)

Ответы [ 4 ]

1 голос
/ 09 октября 2019

Вы можете просто использовать 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;

Приветствия !!

1 голос
/ 09 октября 2019

Предполагается, что столбец stud.grade не может быть больше 100, и если вы используете Oracle ...

select *
from   students
where  stud.grade <= nvl(:grd, 100)
0 голосов
/ 09 октября 2019

Вы можете попробовать это:

select * from students 
where (
        CASE 
        WHEN :grd  IS NULL THEN 1
        WHEN clct.contractid = :grd THEN 1
        ELSE 0 END = 1
        )
0 голосов
/ 09 октября 2019

этого запроса достаточно, чтобы получить то, что вы хотите.

select * from students where stud.grade < coalesce(:grd, stud.grade) or stud.grade = coalesce(:grd, stud.grade)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...