Предполагая, что это хранимая процедура, скажем, ваш параметр называется @Param1
, установите для параметра NULL
значение IS NOT NULL
следующим образом:
SELECT ...
FROM ...
WHERE (
(@Param1 IS NULL AND field1 IS NOT NULL)
OR (field1 = @Param1)
)
Предложено GSerg Тестирование ISNULL(@Param1, field1) = field1
со следующим:
DECLARE @test1 nvarchar(10) = 'testing',
@test2 nvarchar(10) = NULL; -- or 'random' or 'testing'
SELECT 1
WHERE ISNULL(@test2, @test1) = @test1;
Вычисления показаны как 1 для каждого случая.Похоже, это лучшее решение, чем мой первоначальный ответ.