Q&A

  • Access .mdb 인덱스와 like 문제?


[질문] 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 문자열% 처럼 사용할수 있는 방법이 없습니까?

아님 제가 뭔가 잘못 알고 있는건지요?

아시는분 리플 꼭 좀 부탁드립니다.

그럼..안녕히 계세요...

2  COMMENTS
  • Profile
    김경록 2002.10.02 21:46
    음.. 무슨 문제인지는 모르지만..
    저는 잘 됩니다..
    물론, 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와는 아무런 연관이 없는걸로 아는데..
    왜 그럴까요?
    물론, 프로그램에서도 아주 잘됩니다..






  • Profile
    개미 2002.10.02 22:19


    답변 감사합니다.
    아래 델마당 답변내용으로 문제 해결은 되었습니다.
    같은 .mdb 파일에 같은 테이블의 필드에 따라(인덱스 잡힌것과 안잡힌것)
    시작문자열 검색되는것이 있고 안되는것이 있어서
    제 생각은 두 필드의 차이점으론 인덱스 밖에 없거던요.
    그래서 전, 인덱스의 영향을 받을꺼라 생각합니다.
    단순 제 생각입니당 ^^;
    그리고, .mdb의 버젼에 따라 OS에 따라 다를수도 있을꺼라 짐작만 해봅니당.

    암튼 신경써주셔서 너무 감사드립니다.
    수고하세요~~





    ---------------------------------------
    여기서 부터 델마당에서 답변이 온 내용입니당.
    참고하세요~~~~~
    ---------------------------------------


    양용민 wrote:



    님..무지 고맙습니다. 해결되었습니다.

    님 말대로 %% 하니까 되네요...

    그리고, 참고로 제 컴의 OS는 win98 이구요.

    정말 감사합니다.

    즐프~~~~~~~~~~~하세요.