如果Make不等於'0',我只想使用where條件。這是我嘗試過的。這是存儲過程的一個片段。僅當Make不爲0時,查詢纔有效。當它爲0時,它將失敗。帶參數的情況下的表達式
這不是空檢查。 @Make是一個varchar。它是如何實現的,既可以是'0',也可以是一個字符串,例如'mazda'。
select *
from In_Inventory
where
and Make = case
when @Make != '0'
Then @Make
end
如果Make不等於'0',我只想使用where條件。這是我嘗試過的。這是存儲過程的一個片段。僅當Make不爲0時,查詢纔有效。當它爲0時,它將失敗。帶參數的情況下的表達式
這不是空檢查。 @Make是一個varchar。它是如何實現的,既可以是'0',也可以是一個字符串,例如'mazda'。
select *
from In_Inventory
where
and Make = case
when @Make != '0'
Then @Make
end
嘗試是這樣的
SELECT
*
FROM In_Inventory
WHERE @Make = 0
OR Make = @Make
您不能使用case
表達式返回語法元素(如where
條款),只值。但是,你可以得到相同的行爲用一個簡單的in
條件:
SELECT *
FROM In_Inventory
WHERE @Make IN ('0', Make)
試試這個,
SELECT
*
FROM In_Inventory
WHERE @Make = 0
OR Make = @Make
嘗試這樣,
SELECT *
FROM In_Inventory
WHERE (
Make = 0
OR Make = @Make
)
只是爲了自己的理解,這樣做的原因失敗是因爲你的情況只在make!= 0時返回一個值。如果Make爲0,那麼你的查詢只會讀取「和Make =」。再說一遍,這裏沒有理由使用案例。請參閱下面的更好的方法(例如使用OR)。 – Jens