如果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