Ich möchte nur die WHERE-Bedingung verwenden, wenn Make nicht gleich '0' ist. Das habe ich ausprobiert. Dies ist ein Ausschnitt aus dem gespeicherten Proc. Die Abfrage funktioniert nur, wenn Make nicht 0 ist. Wenn sie 0 ist, schlägt sie fehl.Case-Ausdruck mit einem Parameter schlägt fehl
Dies ist kein Null-Check. @Make ist ein Varchar. Wie es implementiert wird, ist entweder '0' oder es wird eine Zeichenfolge sein, z.B. 'Mazda'.
select *
from In_Inventory
where
and Make = case
when @Make != '0'
Then @Make
end
Nur für dich deines eigenen Verstandes, der Grund dieser fails ist, weil Ihr Fall nur einen Wert zurückgibt, wenn make! = 0 ist. Wenn Make 0 wäre, würde Ihre Abfrage nur "und Make =" lesen. Andererseits gibt es keinen Grund, hier einen Fall zu verwenden. Siehe unten für bessere Ansätze (z. B. Verwenden eines OR). – Jens