У меня есть следующий запрос (запуск в sproc):SQL Server 2008 - игнорирование нулевых значений
DECLARE @BrandId UniqueIdentifier
SELECT * FROM Products WHERE р p.BrandId = @BrandId
Мой вопрос - когда NULL передается в @BrandId запрос (правильно) не возвращает никаких результатов - есть ли способ сказать SQL вернуть все строки, когда NULL передается в @BrandId (без использования много из IF-утверждения, то есть - IF @BrandId IS NULL и т. Д.)? - то есть, если @BrandId = NULL, когда «игнорировать» эту часть предложения where.
Вышеприведенный пример - реальный запрос длиннее и имеет несколько переменных (например, @BrandId), которым могут быть переданы пустые значения, - и желаемое поведение заключается в том, чтобы они не ограничивали результаты запроса, когда нулевое значение равно прошло.
Спасибо!
отличное - спасибо! – db1234
Эта форма также подвержена параметру нюхания, может привести к очень плохим планам exec, в зависимости от того, как первый вызов proc вызывается. http://sqlinthewild.co.za/index.php/2009/09/15/multiple-execution-paths/ – GilaMonster