我有一个场景,如果传递给查询的参数是 99999,我需要在 where 子句中使用多个值,否则我只使用参数本身。我使用“IN”作为 where 子句的一部分,但出现以下错误“关键字'CASE' 附近的语法不正确”。任何人都提供了一种替代错误查询的方法,可以让我得到我需要的结果?
DECLARE @IPD_NEWS_TYPE_PARAM decimal (18,0)
SET @IPD_NEWS_TYPE_PARAM = 99999
SELECT
n.id,
n.headline,
n.news_type_id
FROM news n
WHERE n.news_type_id IN
CASE WHEN @IPD_NEWS_TYPE_PARAM = 99999 THEN (1,2,3,4,5)
ELSE
(@IPD_NEWS_TYPE_PARAM)
END