Некоторые люди используют эту технику
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Тем не менее, это гарантирует, что вы никогда не получите индексный поиск по столбцу itemid.разделить запрос на 2 отдельных случая
IF(@itemid IS NULL)
SELECT foo FROM bar
ELSE
SELECT foo FROM bar WHERE itemid = @itemid
Если число комбинаций слишком велико, вы можете рассмотреть динамический SQL.Сначала убедитесь, что вы понимаете внедрение SQL.
Ссылка: Условия динамического поиска в T-SQL