我正在尝试将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
但语法不正确。 有没有办法做到这一点?
答案 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