본문 바로가기
SQL/Oracle

오라클 WHERE IF ELSE 사용방법 및 예제

by wakestand 2020. 11. 24.
반응형

오라클에서 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
반응형

댓글