Einige Leute verwenden diese Technik
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Es garantiert jedoch, dass Sie niemals eine Indexsuche in der itemid-Spalte erhalten.
Ein besserer Ansatz, wenn die Tabelle überhaupt groß ist, besteht darin, die Abfrage in zwei separate Fälle aufzuteilen
IF(@itemid IS NULL)
SELECT foo FROM bar
ELSE
SELECT foo FROM bar WHERE itemid = @itemid
Wenn die Anzahl der Kombinationen zu groß ist, können Sie dynamisches SQL in Betracht ziehen. Stellen Sie sicher, dass Sie zuerst die SQL-Einschleusung verstehen.
Siehe:Dynamische Suchbedingungen in T-SQL