在 CASE 的 THEN 中使用 IN 语句

Using an IN statement in the THEN of a CASE

当我尝试使用下面的行时,我得到了这个:"Incorrect syntax near the keyword 'IN'."

WHERE
    CASE
        WHEN @CostCentreID IS NOT NULL THEN CI.CostCentreID IN(SELECT CAST(Item AS INTEGER) FROM dbo.SplitString(@CostCentreID, ','))
    END    

我不知道哪里出了问题。

THEN 命令在 CASE 语句之外工作正常。我正在尝试捕获 NULL 条目。如果为 NULL 则完全跳过检查。

你可以像这样写你的 WHERE 子句......

WHERE @CostCentreID IS NULL 
  OR  CI.CostCentreID IN (
                           SELECT CAST(Item AS INTEGER) 
                           FROM dbo.SplitString(@CostCentreID, ',')
                         )