带参数的案例表达式失败

时间:2016-06-28 07:47:05

标签: sql sql-server select case

如果Make不等于'0',我想只使用where条件。这就是我尝试过的。这是存储过程的片段。查询仅在Make不为0时有效。当它为'0'时失败。

这不是空检查。 @Make是一个varchar。如何实现它要么是'0'要么是一个字符串,例如'mazda'。

select *
from In_Inventory
where
and Make = case 
when @Make != '0'
Then @Make
end

4 个答案:

答案 0 :(得分:2)

尝试这样的事情

SELECT
*
FROM In_Inventory
WHERE @Make = 0
OR Make = @Make 

答案 1 :(得分:1)

您不能使用case表达式来返回语法元素(例如where子句),只返回值。但是,您可以使用简单的in条件获得相同的行为:

SELECT *
FROM   In_Inventory
WHERE  @Make IN ('0', Make)

答案 2 :(得分:1)

试试这个,

SELECT
*
FROM In_Inventory
WHERE @Make = 0
OR Make = @Make

答案 3 :(得分:1)

试试这个,

SELECT *
FROM In_Inventory
WHERE (
        Make = 0
        OR Make = @Make
        )