Sql условное заявление о где пункт - PullRequest
1 голос
/ 17 января 2012

Я хочу сделать запрос, используя условное выражение для выбора предложения для фильтра. Как то так.

SELECT Id,name,last_name,submitDate,lastvisitDate 
from Visitor Where if(submitDate is not null) begin submitDate >= @dateFrom end
and if(submitDate is not null) begin submitDate < @dateTo end

но мне нужно, например, если @dateTo is null эта переменная не участвует в запросе фильтра

Ответы [ 4 ]

2 голосов
/ 17 января 2012
where (submitDate is null or (submitDate >= @dateFrom and submitDate < @dateTo))
1 голос
/ 17 января 2012

Вы можете применить ISNULL к @dateTo и, таким образом, установить по умолчанию его на действительно отдаленную будущую дату, например 30000101:

…
WHERE submitDate IS NULL
   OR submitDate >= @dateFrom AND submitDate < ISNULL(@dateTo, '30000101')
1 голос
/ 17 января 2012
select * from Visitor where (submitDate is null or submitDate >= @dateFrom) and (submitDate is null or submitDate < @dateTo)
0 голосов
/ 17 января 2012

Я обновил предложение WHERE вашего примера запроса, так что записи будут включены в результаты, если submitDate равен нулю или если submitDate находится между @dateFrom и @ dateTo

SELECT Id, name, last_name, submitDate, lastvisitDate 
FROM Visitor 
WHERE (submitDate IS NULL) OR ((submitDate >= @dateFrom) AND (submitDate < @dateTo))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...