有谁知道如何更好地编写这个SQL If语句?

时间:2010-09-24 14:46:59

标签: sql stored-procedures syntax code-cleanup

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

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

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

4 个答案:

答案 0 :(得分:6)

这应该可以解决问题:

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

IN获取值列表,如果在列表中找到您的值,则返回true。添加NOT表示如果您的值,它将返回true。

答案 1 :(得分:1)

也许有CASE陈述:

if case @someparam when 'C' then 1 when 'I' then @someotherparam NOT IN (2,4,5) else 0 end

答案 2 :(得分:1)

尝试

if (@SomeOtherParam  NOT IN (2, 4, 5))

答案 3 :(得分:0)

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

if not EXISTS (select * from list where my_column= @someotherparam )