반응형
오라클에서 WHERE에 IF, ELSE IF, ELSE를 사용하려는 경우에는
MYBATIS에서 사용하는 것이 최선이지만
상황이 여의치 않을 경우에는
WHERE 절에 IF 처럼 넣어 줄 수 있는데
WHERE ((조건1) OR (조건2)) 이런 식으로 넣게 된다
위 예제에서는
JOB이 CLERK일 경우에는 SAL이 1000 이하인 행만
JOB이 PRESIDENT라면 SAL이 3000 이상인 행만
그 외의 경우에는 SAL이 2900 이상인 값만 가져오는 식인데
1=1으로 한 이유는
어차피 위 두 조건이라면 위에서 걸려서 빠지기 때문에
1=1 로 하건 JOB NOT IN ('CLERK', 'PRESIDENT')로 하건
동일하게 걸리게 되므로 상관이 없어진다
만약 ELSE 절이 필요가 없을 경우
해당 OR 쪽을 지워버리면
조건에 맞지 않는 경우에는 모두 출력이 되지 않게 된다
여기서 명심해야 할 점은 WHERE IF 시
처음 IF 조건에 맞지 않을 경우에는
다른 OR로 넘어가서 체크를 시작하기 때문에
ELSE를 꼭 만들어 두거나
WHERE( (조건1) OR ( 1<>1 )) 처럼
IF에 해당하지 않을 경우에는 조건을 수행하지 않고
빠져나갈 부분을 마련해줘야 한다
마지막으로 예제에 사용한 코드는 아래와 같다
SELECT * FROM EMP
WHERE ((JOB = 'CLERK' AND SAL < 1000) -- IF
OR (JOB = 'PRESIDENT' AND SAL > 3000) -- ELSE IF
OR (1=1 AND SAL > 2900)) -- ELSE
반응형
'SQL > Oracle' 카테고리의 다른 글
오라클 SELECT로 테이블 내 컬럼, 타입, PK, NULL 등 확인방법 (0) | 2020.11.24 |
---|---|
오라클 테이블 컬럼 COMMENT 입력 수정 삭제 및 조회방법 정리 (0) | 2020.11.24 |
오라클 WITH 개념 및 예제 (가상 테이블 생성하여 활용) (0) | 2020.11.24 |
오라클 ROLLUP 개념 및 예제 (0) | 2020.11.23 |
오라클 PL/SQL 수정 시 자동 백업방법(형상관리) (0) | 2020.11.23 |
댓글