[英]Case expression with a parameter fails
如果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
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.