2017-10-27 17 views
0

case文をクエリのwhere条件に追加しようとしています。 ==他0私はCOL1はWHERE条件にnullでほしい - 上記のクエリに示すように 私のクエリは、私は、ID場合はWHERE条件に0 = COL1を追加したいbelow-where句のユースケース

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

のように見えます。 試しました

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

構文は正しくありません。 これを行う方法はありますか?

+0

なぜ 'どこ(ID = 1、COL1 = 0)OR(ID <> 1、COL1 IS NULL)'? –

答えて

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

NULLと等しい比較(id = NULL)私はそれが動作するとは思わない –

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) 
0

を試してみてください。特定の列を記入するために以下のように使用することができます。しかし、これを行うときにも他の列を選択する必要があります。

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

私は、これはあなたが探しているものだと思う:

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