Фильтрация MySQL по возможному нулевому значению
Я пишу хранимую процедуру mysql, которая принимает один параметр datetime. он использует его в инструкции select как таковой..
select *
from table
where date >= @datefrom or @datefrom is null
Когда я пишу запросы t-sql, это обычно делает трюк, но он, кажется, не работает с mysql.
Я также пробовал другие варианты, такие как
where date >= ifnull(@datefrom, date)
А также
where ((date >= @datefrom and @datefrom is not null) or (@datefrom is null))
Но я не получаю результатов, которых ожидаю..
Может ли кто - нибудь пролить на это свет?
Определение процедуры как такой..
CREATE DEFINER=`root`@`%` PROCEDURE `prc_xxxxxx`(datefrom datetime)
BEGIN
select * from table
where date >= @datefrom or @datefrom is null
END
А потом я бы позвонил вот так..
call prc_xxxxxx ('2012-07-04 00:00:00')
Или
call prc_xxxxx (null)
1 ответ:
Как уже упоминалось, символ @ используется для переменных сеанса , а не для сохраненных рутинных параметров-они должны быть незафиксированными. Например:
CREATE PROCEDURE `proc_IN` (IN var1 INT) BEGIN SELECT var1 + 2 AS result; END//
Этот пример был взят из этого учебника.