[질문] Access .mdb 인덱스와 like 문제?
안녕하세요.
질문 보시고 벌써 내용을 이해하신분들도 계시시라 생각됩니다.
Access .mdb를 쓰구 ADOquery 를 쓰다 문제점이 발견되어 해결방안을
찾고 있습니다.
ADOQueryCustoms.Close;
ADOQueryCustoms.sql.clear;
ADOQueryCustoms.sql.add('select * from customs');
if EditSearch.text <> '' then begin
ADOQueryCustoms.sql.add('where code like :pcode');
ADOQueryCustoms.Parameters.ParamValues['pcode'] := trim(EditSearch.text) + '%';
end;
ADOQueryCustoms.sql.add('order by code');
ADOQueryCustoms.Open;
시작문자열 검색이 안되어서 질답게시판에 많이 올라온 '*' '%' 부분도
테스트 해보고 ' " 따옴표 문제도 테스트 해보고
trim() 함수를 써보라고 해서 그것도 해보고
결국, 시작하는 문자열로 검색하는것이 안되어서 데이타베이스를
확인해 보니 인덱스가 있는 필드는 위에 sql 이 적용이 되지 않구여.
인덱스가 없는 필드는 검색이 됩니다.
그러니까
like 문자열% 하면 시작문자열
like %문자열% 하면 중간문자열
like %문자열 하면 끝나는문자열 이렇게 검색이 되잖아요.
제가 하고 싶은건 시작문자열을 검색하려 하는데 .mdb 필드에 인덱스가 잡힌
필드만 시작문자열 검색이 안되는것입니다.
똑같은 루틴으로 테스트 해본 결과....
그렇다구 %문자열% 처럼 중간문자열로 처리해서는 안되지 않습니까?
그리고, 저로선 이해가 안되는것이 인덱스가 잡혀 있다고
시작문자열 검색이 안된다는것이 이해가 안되거던요.
인덱스가 잡힌 필드도 like 문자열% 처럼 사용할수 있는 방법이 없습니까?
아님 제가 뭔가 잘못 알고 있는건지요?
아시는분 리플 꼭 좀 부탁드립니다.
그럼..안녕히 계세요...
저는 잘 됩니다..
물론, INDEX는 잡혀 있구여..
SQL문은 이렇습니다..
SELECT * FROM POSTMST
WHERE SIDO LIKE '강%'
물론 DATA는 잘나오구여..
TABLE은 QUERY를 사용해서 직접 생성했구여..
예) CREATE TABLE POSTMST
(
어쩌구 저쩌구..
.
.
)
INDEX도 QUERY로 직접 생성했습니다..
예) CREATE INDEX IDX1_POSTMST ON POSTMST(SIDO)
저는 잘되는데 혹시 다른 문제가?
참고로, 전 Office 2000에서 지원하는 MDB를 사용하고 있습니다.
index와는 아무런 연관이 없는걸로 아는데..
왜 그럴까요?
물론, 프로그램에서도 아주 잘됩니다..