else if @Mode='searchdetailsallvalues'
begin
select *
from tbl_Pgm_Preview
where (Brand=@brand) and (Department=@department)
and (CASE
WHEN (@Liststyle <> ',') THEN
(Style in (Select * from dbo.[CSVToTableStyle](@Liststyle)))
ELSE NULL
END)
and (CASE
WHEN (@Listkdia <> ',') THEN
(K_DIA in ( K_DIA in ( Select * from dbo.[CSVToTableKdia](@Listkdia)))
ELSE NULL
END)
end
我收到以下错误
消息156,级别15,状态1,过程sp_Program,第141行
关键字&#39; in&#39;附近的语法不正确。
消息102,级别15,状态1,过程sp_Program,第141行
&#39;)附近的语法不正确
如何解决这个问题?即使我尝试使用IF条件语句....我需要在SELECT,AND子句中使用IF语句。
答案 0 :(得分:0)
您的CASE表达式:
CASE
WHEN (@Liststyle <> ',') THEN
(Style in (Select * from dbo.[CSVToTableStyle](@Liststyle)))
ELSE NULL
END
评估条件@Liststyle <> ','
,但它返回条件Style in (Select * from dbo.[CSVToTableStyle](@Liststyle))
,而不是CASE operator must return a result expression,例如,SUM(MyNumbersColumn)
或'MyString'
或{{ 1}}。
结果表达式是在执行控制流期间由SQL引擎评估的内容,它必须始终返回值,而不是条件。
正如@Damien_The_Unbeliever指出的那样,您应该在1+1
子句中使用AND
或OR
条件而不是CASE
。