반응형
오라클에서 조회 시
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이거나
)
반응형
'SQL > Oracle' 카테고리의 다른 글
오라클 테이블 컬럼 디폴트 설정 변경 삭제방법 (0) | 2020.05.19 |
---|---|
오라클 != <> ^= 차이 정리글 (1) | 2020.05.18 |
오라클 ROWNUM 개념부터 활용까지 (0) | 2020.04.19 |
오라클 OVER() 개념부터 사용법까지 (3) | 2020.04.18 |
오라클 CONCAT, ||를 이용한 문자열 합치기 및 예제 (0) | 2020.03.30 |
댓글