DECLARE @BrandId uniqueidentifier;
SELECT * FROM Products p WHERE p.BrandId = ISNULL(@BrandId, p.BrandId);
Мой единственный комментарий здесь: если у вас много продуктов, этот шаблон запроса не будет сильно оптимизирован для случая, когда BrandId равен NULL (если вы помещаете запрос в хранимую процедуру), поскольку может быть сохранен только один план. за процедуру за утверждение.
Если вы используете этот оператор в хранимом процессе и действительно заботитесь о высокой производительности (то есть, если у вас много продуктов, и вы часто выполняете этот запрос), вы должны использовать:
IF @BrandId IS NULL BEGIN
SELECT * FROM Products p;
END ELSE BEGIN
SELECT * FROM Products p WHERE p.BrandId = @BrandId;
END