WHERE子句中的SQL CASE WHEN

时间:2013-11-27 15:20:55

标签: sql sql-server

搜索了这个问题,但找不到确切问题的问题。 我有一个存储过程从大量表中获取数据。 在我的SP中,我有一个指示ID的参数。该ID的默认值为零。 我想在查询中返回有关此参数的所有值,除非提供了值。

SELECT mT.*
FROM myTable mT
     (various JOINS)
WHERE 
CASE @myParameter
     WHEN 0 THEN 1 = 1
     ELSE mT.ID = @myParameter
END

不幸的是我收到错误消息“'=''附近的语法不正确”。 修复的事情:它必须是一个SP,我只得到一个参数,我可以设置一个默认值,以防它没有填充。如果未填充,则where子句的这一部分不适用(WHERE子句中有更多语句。

如果我没有看到包含此​​问题的问题,请给我一个提示,在哪里找到它。

最好的问候和提前感谢!

1 个答案:

答案 0 :(得分:4)

您不需要CASE

SELECT mT.*
FROM myTable mT
     (various JOINS)
WHERE 
@myParameter= 0 OR mT.ID = @myParameter