본문 바로가기
SQL/Oracle

오라클 WHERE OR 문 사용방법

by wakestand 2020. 5. 14.
반응형

오라클에서 조회 시

WHERE 절에 OR를 넣어

 

EMP 테이블의 HIREDATE가

19800101 ~ 19811231 안에 속하는 값이면서

DEPTNO는 '20'이거나

ENAME이 'CLARK'인 값을 가져오려고 하는데

 

조회를 해 보니 조건이 제대로 적용되지 않고

모든 행이 나오는 것이 보인다

OR를 제대로 사용하지 못해서

이런 결과가 나온 것이다

 

OR은 다음과 같은 방식으로 사용한다

 

먼저 AND를 넣은 후 괄호를 치고

처음에 조건을 넣어주면

조건에 해당하지 않을 때만

OR문을 수행하게 된다

 

즉 1=2이라고 써 놓은 곳에 조건을 넣고

조건에 해당하지 않을 때만

아래의 OR를 타게 된다는 것!

 

위의 경우에는 1=2는 항상 틀리기 때문에

HIREDATE가 19800101 ~ 19811231에 속하면서

DEPTNO가 '20' 이거나

ENAME이 'CLARK'인 값만 가져오게 된다

 

예제에 사용한 쿼리문은 아래와 같다

 

SELECT * FROM SCOTT.EMP
 WHERE 1=1
   AND HIREDATE BETWEEN '19800101' AND '19811231'
   AND ( 1=2 -- 조건에 해당하면 OR 적용하지 않음
  	 OR DEPTNO = '20'   -- DEPTNO가 20이거나
  	 OR ENAME = 'CLARK' -- ENAME이 CLARK이거나
       )
반응형

댓글