搜索了这个问题,但找不到确切问题的问题。 我有一个存储过程从大量表中获取数据。 在我的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子句中有更多语句。
如果我没有看到包含此问题的问题,请给我一个提示,在哪里找到它。
最好的问候和提前感谢!
答案 0 :(得分:4)
您不需要CASE
:
SELECT mT.*
FROM myTable mT
(various JOINS)
WHERE
@myParameter= 0 OR mT.ID = @myParameter