2017-10-27 13 views
0

case 문을 쿼리의 where 조건에 추가하려고합니다. 내 쿼리 내가에 = 0 COL1 추가하려면 위의 질의에 나타낸 바와 같이where 절의 사용 사례

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

below-처럼 보이는 곳 조건 ID 경우 - == 0 다른 내가 COL1 어디 상태의 null합니다. 시도했습니다.

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

구문이 올바르지 않습니다. 이렇게 할 방법이 있습니까?

+0

왜'어디 (ID = 1 AND COL1 = 0) 또는 (ID <> 1 AND COL1은 IS NULL)':

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

답변

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

나는 이것이 당신이 찾고있는 무슨 생각?