Nogle mennesker bruger denne teknik
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Det garanterer dog, at du aldrig vil få en indekssøgning på itemid-kolonnen.
En bedre tilgang, hvis tabellen overhovedet er stor, er at dele forespørgslen op i 2 separate sager
IF(@itemid IS NULL)
SELECT foo FROM bar
ELSE
SELECT foo FROM bar WHERE itemid = @itemid
Hvis antallet af kombinationer er for stort, kan du overveje dynamisk SQL. Sørg for, at du forstår SQL-injektion først.
Ref:Dynamiske søgebetingelser i T-SQL