Моя хранимая процедура принимает необязательный параметр, как это:Использование NULL в WHERE
CREATE PROCEDURE MyProc
(
@P1 varchar(255) = NULL
)
AS
SELECT * FROM MyTable WHERE MyField = @P1
@P1
Когда это NULL
, я хочу, чтобы выбрать все записи. Один очевидный способ - использовать здесь IF
, но я хотел бы сделать это в одном выражении SQL. Может ли кто-нибудь предложить умный способ достичь этого? Я думаю о линиях использования ISNULL()
или MyField = MyField
. Попробовали несколько способов, но тот факт, что NULL = NULL
не является True
, является главной блокадой здесь.
Вы должны взглянуть на эту статью об этом типе запроса. http://sqlinthewild.co.za/index.php/2009/03/19/catch-all-queries/ –