BETWEEN 구문에 대해서 제대로 결과를 가져오지 못하는 현상이 있습니다.
A와 B 두테이블이
SELECT *
FROM TABLE_A A, TABLE_B B
WHERE A.COL1 = B.COL1
AND A.DATE BETWEEN B.FROM_DATE AND B.TO_DATE
문제는 기본적으로 나와야 하는 값은 100건이라고 가정했을때,
최초 하드파싱시에는 약 110건이 나오는 문제가 있습니다.
이후 재조회를 하면 정상적인 값인 100건으로 나옵니다.
-------------------------------------------------------------------------------------------------------------------------
A테이블의 DATE를 B테이블의 구간사이에 있는 데이터를 가져오는 부분입니다.
B테이블의 구간은 전부 채워진건 아니고 TO_DATE쪽에 간혹 NULL이 있을 수 있습니다.
예시를 들자면 다음과 같습니다.
[TABLE_A]
COL0 COL1 DATE
000000000001 99274897 20111001
000000000002
99274897 20101103
000000000003
99274897 20110808
000000000004
39204117 20101001
000000000005
99274897 20111201
000000000006
39204117 20090910
[TABLE_B]
COL1 COL2 COL3 FROM_DATE TO_DATE
99274897
A0
5
20090901
20101031
99274897
A0
6
20101101
20110417
99274897
B3
2
20090301
99274897
B1
4
20090901
39204117 A0 5 20090901 20101031
39204117 A0 6 20101101 20110417
39204117 A1 7 20110418 99991231
39204117 B1 1 20010804 20090228
39204117 A0 3 20090301 20090831
39204117 B3 2 20090301
39204117 B1 4 20090901
....
결과를 보면 B테이블의 TO_DATE가 NULL인 데이터들이 같이 나오는것 같습니다.
하지만 재조회를 하면 사라지니 뭔가 오라클의 버그인것 같습니다.
이러한 유형의 버그를 보신적이 있으신가해서 글을 올려봅니다.
버전은 오라클 11.2.0.1.0 입니다.
답변 부탁드릴게요.