在sql查询中的if语句

时间:2011-12-16 15:42:53

标签: .net

我在数据库中有两列:campus1campus2,我想编写一个查询来执行以下操作:

  

如果campus2为空,则仅比较campus1数据,否则比较campus1campus2数据。

我写了下面的查询,但收到了错误信息。

select * from tbl1 where 
case when  campus2 is null then (campus1=@campus or campus1 is null)
else
   (campus1=@campus or campus1 is null) and (campus1=@campus or campus2 is null)
end

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

这里不需要case语句只写出布尔逻辑

WHERE
(campus2 is null
      AND
   (campus1=@campus or campus1 is null))
OR
(campus2 is not null
        AND 
   (campus1=@campus or campus1 is null)                 
   and campus2=@campus)
)

作为附注,如果您真的想在Case子句中使用Where语句,通常以此形式编写

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

这将几个条件评估为一个值与参数

进行比较