2011-12-16 17 views
1

私は、データベース内の2つの列がある場合:campus1campus2を、私は次のシナリオを実行するクエリを記述します:SQLクエリ内のステートメント

campus2がnullの場合のみ比較、campus1データを比較し、他のcampus1campus2の両方のデータです。

以下のようなクエリを書きましたが、エラーメッセージが表示されました。

select * from tbl1 where 
case when campus2 is null then ([email protected] or campus1 is null) 
else 
    ([email protected] or campus1 is null) and ([email protected] or campus2 is null) 
end 

誰でも正しい方向を指摘できますか?

+0

と比較することが一つの値にいくつかの条件を評価 - でも、それならばcompilあなたの 'else'節の条件は、あなたがその上にチェックしているような状態をカバーしています。 –

+1

hrmm、そのためのcase文が必要ではないと思わないでください。どのようにselect *をtbl1から(campus2がヌルかcampus2 = @ campus2)、campus1 = @ campus1にするのですか? – Intrigue

答えて

0

あなたは、通常、この形式でそれを書くあなたが本当にWhere句でCaseステートメントを使用したい場合だけ注意点としてブール論理

WHERE 
(campus2 is null 
     AND 
    ([email protected] or campus1 is null)) 
OR 
(campus2 is not null 
     AND 
    ([email protected] or campus1 is null)     
    and [email protected]) 
) 

を書き出すここでcaseステートメントを必要としません

WHERE 
     CASE WHEN condition THEN expression 
      ELSE otherExpression 
     END = @SomeParameter 

これは意味がありませんパラメータ

+0

ありがとうございます。それは今素晴らしいです! – user788448

関連する問題