我在数据库中有两列:campus1
和campus2
,我想编写一个查询来执行以下操作:
如果
campus2
为空,则仅比较campus1
数据,否则比较campus1
和campus2
数据。
我写了下面的查询,但收到了错误信息。
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
有人能指出我正确的方向吗?
答案 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
这将几个条件评估为一个值与参数
进行比较