데이터베이스/Oracle
WHERE 절 우선 처리 방법
프린이!
2020. 4. 28. 19:23
오라클에서 OR , AND 처리에서 우선권은 항상 AND 가 갖는다.
그래서 검색 처리 SQL 작성시 항상 우선순위에 주의해야한다.
◎ 다중 검색 처리 SQL 쿼리
SELECT * FROM
(
select rownum rn, bno, title, content, writer, regdate, updatedate
from tbl_board
where title like '%Test%' or content like '%TEST%'
and rownum <= 20
)
where rn > 10;
위의 SQL 진행시 원하는 값과 다른 결과를 가지게 된다.
AND 연산자가 우선순위가 높기 때문에 'ROWNUM' 이 20 보다 작거나 같으면서(AND) 내용이나 제목에 TEST 문자열이 있는 게시물들을 검색하게 된다.
원하는 결과 값을 가지기 위해서는 괄호<(, )>를 통해 아래와 같이 우선처리 방식을 변경해야한다.
◎ 괄호를 통해 우선순위 변경
SELECT * FROM
(
select rownum rn, bno, title, content, writer, regdate, updatedate
from tbl_board
where
(title like '%Test%' or content like '%TEST%')
and rownum <= 20
)
where rn > 10;
괄호 (, ) 는 AND 연산자보다 우선순위가 높기 때문이다.