where子句中的用例

时间:2017-10-27 14:33:14

标签: sql case where

我正在尝试将case语句添加到查询中的where条件。 我的查询如下所示 -

select * from table_name
where
if(id==1) then col1 = 0
else           col1 is null

如上面的查询所示,我想在其中条件中添加col1 = 0,如果id - == 0,否则我希望col1在where条件中为null。 我试过了

select * from table_name
where 
case id =1 then (col1 = 0)
else col1 is null
end

但语法不正确。 有没有办法做到这一点?

4 个答案:

答案 0 :(得分:3)

SELECT *
FROM table_name
WHERE isnull(id, '')= CASE(id)
               WHEN 1
               THEN 0
               ELSE ''
           END;

答案 1 :(得分:0)

我不确定您的要求,但如果满足以下条件,您可以尝试

select * from table_name
where 
isnull(col1,'') = case when id = 1 then   0
else '' end

也可以尝试

select * from table_name
where 
( col1 = 0 and id = 1) OR ( col1 is null and id<>1 )

答案 2 :(得分:0)

我认为您正在寻找解决方案的案例。可以使用以下内容填写特定列。当你这样做时,你也需要选择其他列。

select 
case when id = 1 then 0 else null end as col1
from table_name

答案 3 :(得分:0)

我认为这是你正在寻找的东西:

select case when id = 1 then 0 else null end as col1, * from table_name