안녕하세요. 해결은 하였지만 좀더 세련된 방법이 있는지 여쭈고자 이렇게 질문을 드립니다.
제목과 같이 해당 테이블의 여러건의 데이터를 조회 해오는 조건중 날짜가 한건이라도 있으면 체크를 해야 되는데요
예를들어
WHERE begda NOT NULL.
또는
WHERE begda NE SPACE.
조건절을 사용 할때는 올바른 값을 가져오지 못하네요. ㅠㅠ
저는 해당 데이터를 가져와 LOOP에 where절에 IS NOT INITIAL. 구문을 사용 하였습니다.
어떤분은 WHERE begda NE '00000000' . 이라고 하셧는데
효율적<?> 세련된 방법을 아시는 분이 있으시면 알려주시기 바랍니다..
//감사합니다.
댓글 4
-
도움이
2010.10.12 22:36
-
소랑
2010.10.12 23:35
where begda > ' '라고 사용하면 될거 같은데 확인해 보세요.
-
맑은하늘
2010.10.13 01:30
data type 별로 초기값을 상수화하여 사용하시는 것이 일반적입니다.
보통 테이블 잡을 때 initial 체크를 하거든요. 도움이님 말씀처럼요.
constants c_init_date type d value '00000000'.
SELECT ~
...
WHERE begda NE c_init_date.
-
wsj1122
2010.10.13 09:54
^^ 그렇군요 좋은 정보 매우 감사합니다. 생각안하고 있던 부분이군요.^^
먼저 해당 테이블의 begda 필드에 initial 에 V 가 되어 있는지 확인해 보세요
begda 필드에 initial 이 V표기가 되어 있으면
데이터가 들어가지 않을경우 '00000000' 값이 default 로 들어가게 됩니다.
DATS 타입의 initial 값은 '00000000' 이기 때문입니다.
그래서 WHERE begda NOT NULL. 나 WHERE begda NE SPACE. 구문이 적용이 안된겁니다
'00000000' 은 null 이 아니고 space 도 아니기 때문입니다.
loop where 절에 is not initial 구문도 괜찮아 보입니다만 performance 측면에서는 어떤지 모르겠네요..