Я хочу сделать запрос с помощью условного выражения для выбора условия для фильтра. Что-то вроде этого.Sql условный оператор where where
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
эта переменная не участвует в запросе фильтра
, но если вы говорите, что NULL, выбор будет искать нулевые значения в этом поле? – jcvegan
@JuanCarlosVegaNeira: Нет, ['ISNULL()'] (http://msdn.microsoft.com/en-us/library/ms184325.aspx «ISNULL (Transact-SQL)») просто возвращает второй аргумент, если первый один - NULL, иначе он возвращает первый аргумент. В моем примере ISNULL эффективно предоставляет значение по умолчанию для '@ dateTo', если оно NULL. Итак, если '@ dateTo' * равно * NULL,' submitDate' будет сравниваться с очень большим значением, которое будет таким же, как если бы мы просто проигнорировали это условие, потому что оно обязательно вернет 'true'. –
Это прекрасно работает, спасибо! – jcvegan