2010-09-24 203 views
1

我有我的存儲過程此IF聲明:有誰知道如何寫這個SQL如果語句更好?

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

我的問題是,我可以檢查@SomeOtherParam一個炮打響,而不必檢查3個獨立倍?

回答

6

這應該做的伎倆:

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

IN取值的列表,如果你的價值在列表中找到返回true。添加NOT意味着如果您的值爲而不是,則返回true。

1

或許真的與CASE語句:

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

嘗試

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

還有EXISTS關鍵詞在SQL,您可以使用

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