필드 이름 열이 있고 다른 이름이 데이터 열 이름이 Oracle이고 데이터 coulmn이 Null 인 경우 쿼리에 반환하지 않으려합니다. where 절에 Oracle 쿼리 case 문
나는이 시도하고 그냥이AND field_name = Case When field_name= 'Oracle' And Data IS Null
field_name <> 'Oracle'
Else field_name
End
필드 이름 열이 있고 다른 이름이 데이터 열 이름이 Oracle이고 데이터 coulmn이 Null 인 경우 쿼리에 반환하지 않으려합니다. where 절에 Oracle 쿼리 case 문
나는이 시도하고 그냥이AND field_name = Case When field_name= 'Oracle' And Data IS Null
field_name <> 'Oracle'
Else field_name
End
당신은 case 문을 원하지 않는 일을 나던 :
AND NOT (field_name = 'Oracle' AND data is null)
당신은 case 문을 수행 할 수도 있지만이 좋겠 좀 이상하다. 첫 번째 사례가 항상 거짓으로 평가되기를 원하므로 THEN 다음에 부분이 필요하므로 field_name
과 같을 수 없습니다. 이 경우 원래 문자열과 같을 수없는 문자열의 시작 부분에 일부 문자 ("not")를 추가했습니다.
AND field_name = Case When field_name= 'Oracle' And Data IS Null
THEN 'not' || field_name
Else field_name
End
다음과 같이 사용하십시오.
AND 1 = (
CASE
WHEN field_name = 'Oracle'
AND data IS NULL THEN 0
ELSE 1
END
);
다음은 사용할 수있는 쿼리입니다.
with tmp as (
select 'Oracle' as field_name , 1 as data from dual union all
select 'Oracle' as field_name , null as data from dual union all
select NULL as field_name , null as data from dual union all
select 'Test' as field_name , null as data from dual)
Select * from tmp
Where 1 = case when field_name = 'Oracle' and data is null
then 0
else 1
end
는
다운 투표자에게 다운 투표에 대한 논리를 설명해 주시겠습니까? 코멘트없이 다운 투표하는 것은 정말로 생산적이지 않습니다. – Jignesh
귀하의 문이 THEN
절 누락되고 field_name <> 'Oracle'
가 무효가 :로 단순화 할 수
AND field_name = CASE
WHEN field_name = 'Oracle' AND Data IS NULL
THEN 'FALSE'
ELSE field_name
End
: 때`field_name`이
AND (field_name <> 'Oracle' OR (Data IS NOT NULL AND field_name IS NOT NULL))
의 경우'NULL'을 수행해야합니다 별도로 처리해야합니다. 당신이 제안한 해결책은 그렇게하지 않습니다. 'field_name'과'data'가 모두'NULL' 인 행을 처리 할 것입니다. – mathguy