2. 컴퓨터 이야기/데이타베이스

오라클 DB 에서 between 이용시 유의사항

래빗 크리스 2009. 12. 4. 11:12

select *
  from tableA
 where colA between conA and conB
;

상기와 같이 쿼리를 할 때, conA 와 conB 의 관계는 conA <= conB 이어야 한다.
만약 conA 와 conB 의 관계가 conA > conB 이면 쿼리 결과는 없다.
ResultSet 에 null 이 들어온다.
가장 기본적인 내용인데, 나도 간혹 잊어버리곤 한다.
아주아주 복잡한 쿼리를 만들어 놓고는 왜 결과가 안 나오나 몇시간째 고민하다가,
위와 같은 원리를 접어 두었던 적이 한두번이 아니다.
UI 에서 일자를 관리할때 From 과 To 의 관계가 역순이 되지 않도록 해야 하는 이유다.

colA 가 Date 형이고,
conA 와 conB 가 to_date('20091211','yyyymmdd') 와 유사한 형태라면..
일자에 대해서는 좀더 주의를 기울여야 한다.
예를들어, 2009년 12월 11일 12시를 to_date('2009121112','yyyymmddhh24') 라고 표현했다면..
당일 12시 00분 00초 부터(의미상 01초 라고 해야 하겠지만..) 12시 59분 59초 까지 모두를 아우르기 때문이다.
물론, 비교문에서도 마찬가지지만, 특히 between 문에서는 유의를 해야 한다.

colA 가 Number(m, n) 으로 정의된 경우에도,
소수점 이하의 수치에 유의 해야 한다.
Date 형에서 설명한 바와 유사한 이유에서다.