1

我的存储过程中有这个IF语句:

if ((@someParam = 'C') OR (@someParam = 'I' AND @SomeOtherParam <> 2 AND @SomeOtherParam <> 4 AND @SomeOtherParam <> 5))

我的问题是我可以一次检查@SomeOtherParam,而不必分别检查 3 次吗?

4

4 回答 4

6

这应该可以解决问题:

if ((@someParam = 'C') OR (@someParam = 'I' AND @SomeOtherParam NOT IN (2,4,5))) 

IN接受一个值列表,如果在列表中找到您的值,则返回 true。添加意味着如果找不到NOT您的值,它将返回true 。

于 2010-09-24T14:48:52.960 回答
1

也许与 CASE 陈述有关:

if case @someparam when 'C' then 1 when 'I' then @someotherparam NOT IN (2,4,5) else 0 end
于 2010-09-24T14:50:32.353 回答
1

尝试

if (@SomeOtherParam  NOT IN (2, 4, 5))
于 2010-09-24T14:52:22.717 回答
0

SQL 中还有 EXISTS关键字,您可以使用它

if not EXISTS (select * from list where my_column= @someotherparam )
于 2010-09-24T14:57:06.620 回答