繁体   English   中英

WHERE子句中的SQL CASE WHEN

[英]SQL CASE WHEN in WHERE clause

搜索了此问题,但找不到确切的问题。 我有一个存储过程,可以从大量表中获取数据。 在我的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子句中还有更多语句。

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

最好的问候,并在此先感谢!

您不需要CASE

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM