在Server存储过程中,我希望添加一个动态的Where子句,如下所示:
AND CASE WHEN @mySt <> '' THEN s.myStatus IN(@mySt) ELSE 0=0 END当我想检查是:如果@mySt不是空的,我想添加s.myStatus IN(@mySt)。
如果@mySt是空的,我想跳过这个where子句。
我犯了个错误
不正确的语法在“IN”
附近
发布于 2021-01-20 11:26:08
CASE是一个表达式,它返回一个标量值而不是一个布尔结果;您不可能想要这样做,因为s.myStatus IN(@mySt)不是标量值。
使用正确的布尔逻辑:
AND (s.myStatus = @mySt OR @mySt IS NULL) --I suggest NULL over a blank string我将IN替换为=,因为@mySt是标量值,因此IN和=将是同义词。
https://stackoverflow.com/questions/65808570
复制相似问题