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 형에서 설명한 바와 유사한 이유에서다.
'컴퓨터 이야기 > 데이타베이스' 카테고리의 다른 글
Unique 인덱스를 Full Scan 하는 플랜이 떠져서 확인했더니, 아차차.. ㅠ.ㅠ (2) | 2010.09.13 |
---|---|
오라클 Date 데이타들 간의 경과(시간차)를 일/분/초로 확인하는 방법 (1) | 2010.01.20 |
오라클 DB 에서 DML 작업시 OCI_NO_DATA 오류가 날때 트리거가 문제라면, 잠시 disable 해 놓자 (1) | 2009.11.19 |
connect by ~ start with ~ order siblings by ~ 문에 대한 Oracle 9i Plan (실행계획) (7) | 2009.08.02 |
오라클 DB 성능 향상 엑셈 MaxGauge (1) | 2009.07.29 |