Q&A

  • 한 필드에 대해 두개 이상의 값을 검색하는 방법은?
소스는 다음과 같습니다.

DM1.Query2.Close;

DM1.Query2.sql.clear;

DM1.Query2.sql.add('Select id,baecha,date,cancel from baechalist');

DM1.Query2.sql.add('where baecha = "' + IntToStr(sunbun3)+'"');

DM1.Query2.Sql.Add('And (Date >= "'+ fdate+'" and Date <= "'+tdate+'") ');

DM1.Query2.SQL.Add('And (cancel like "취소") ');

DM1.Query2.SQL.add('Order by id');

DM1.Query2.open;



위 소스는 cancel이라는 칼럼에서 "취소"라는 글씨가 있는 필드만 검색하는 것인데

여기다 "취소"와 예를 들어 "가"라는 글씨가 있는 필드를 함께 검색하기 위해서는

("취소"또는 "가"라는 글씨가 있는 필드를 함께 검색하기 위해서는) 어케해야 하는지

고수님들 알려주시기 바랍니다. 바쁘시더라도



3  COMMENTS
  • Profile
    공성환 2000.09.02 04:01
    oracle에 기준하여...

    and cancle like '취소%' or cancle like '가%'

    그리고 where 절에 ( )로 묶어주면 인덱스를 안타죠...

    도움이 되었는지...

    즐거운 하루 되세요...





    한영수 wrote:

    > 소스는 다음과 같습니다.

    > DM1.Query2.Close;

    > DM1.Query2.sql.clear;

    > DM1.Query2.sql.add('Select id,baecha,date,cancel from baechalist');

    > DM1.Query2.sql.add('where baecha = "' + IntToStr(sunbun3)+'"');

    > DM1.Query2.Sql.Add('And (Date >= "'+ fdate+'" and Date <= "'+tdate+'") ');

    > DM1.Query2.SQL.Add('And (cancel like "취소") ');

    > DM1.Query2.SQL.add('Order by id');

    > DM1.Query2.open;

    >

    > 위 소스는 cancel이라는 칼럼에서 "취소"라는 글씨가 있는 필드만 검색하는 것인데

    > 여기다 "취소"와 예를 들어 "가"라는 글씨가 있는 필드를 함께 검색하기 위해서는

    > ("취소"또는 "가"라는 글씨가 있는 필드를 함께 검색하기 위해서는) 어케해야 하는지

    > 고수님들 알려주시기 바랍니다. 바쁘시더라도

    >

  • Profile
    한영수 2000.09.02 04:04
    제 질문에 답해주셔서 정말 고맙습니다.

    한가지 더 여쭤봐도 될까요?



    DM1.Query2.Close;

    DM1.Query2.sql.clear;

    DM1.Query2.sql.add('Select id,baecha,date,cancel from baechalist');

    DM1.Query2.sql.add('where baecha = "' + IntToStr(sunbun3)+'"');

    DM1.Query2.Sql.Add('And (Date >= "'+ fdate+'" and Date <= "'+tdate+'") ');

    DM1.Query2.SQL.Add('And (cancel like "취소") ');

    DM1.Query2.SQL.add('Order by id');

    DM1.Query2.open;



    위 소스중 6째줄만 다음과 같이 고쳐봤는데 안돼거든요?

    뭐가 틀렸는지 말씀좀 해주세요

    DM1.Query2.SQL.Add('And ((cancel like "취소") or (cancel like "가")) ');

    이렇게 하니까 "가"라고 입력된 필드만 검색되네요.

    한번만 더 알려주시면 안될까요?

    죄송합니다.



    공성환 wrote:

    > oracle에 기준하여...

    > and cancle like '취소%' or cancle like '가%'

    > 그리고 where 절에 ( )로 묶어주면 인덱스를 안타죠...

    > 도움이 되었는지...

    > 즐거운 하루 되세요...

    >

    >

    > 한영수 wrote:

    > > 소스는 다음과 같습니다.

    > > DM1.Query2.Close;

    > > DM1.Query2.sql.clear;

    > > DM1.Query2.sql.add('Select id,baecha,date,cancel from baechalist');

    > > DM1.Query2.sql.add('where baecha = "' + IntToStr(sunbun3)+'"');

    > > DM1.Query2.Sql.Add('And (Date >= "'+ fdate+'" and Date <= "'+tdate+'") ');

    > > DM1.Query2.SQL.Add('And (cancel like "취소") ');

    > > DM1.Query2.SQL.add('Order by id');

    > > DM1.Query2.open;

    > >

    > > 위 소스는 cancel이라는 칼럼에서 "취소"라는 글씨가 있는 필드만 검색하는 것인데

    > > 여기다 "취소"와 예를 들어 "가"라는 글씨가 있는 필드를 함께 검색하기 위해서는

    > > ("취소"또는 "가"라는 글씨가 있는 필드를 함께 검색하기 위해서는) 어케해야 하는지

    > > 고수님들 알려주시기 바랍니다. 바쁘시더라도

    > >

  • Profile
    김일영 2000.09.02 04:06
    문제의 원인은 잘 모르겠습니다만

    or를 사용하면 인덱스를 쓰지 않기 때문에 느립니다.

    '취소'에 대한 select문장과

    '가'에 대한 select 문장을 만들어서

    두 문장을 union 하십시오.

    속도가 훨씬 빠릅니다.



    한영수 wrote:

    > 제 질문에 답해주셔서 정말 고맙습니다.

    > 한가지 더 여쭤봐도 될까요?

    >

    > DM1.Query2.Close;

    > DM1.Query2.sql.clear;

    > DM1.Query2.sql.add('Select id,baecha,date,cancel from baechalist');

    > DM1.Query2.sql.add('where baecha = "' + IntToStr(sunbun3)+'"');

    > DM1.Query2.Sql.Add('And (Date >= "'+ fdate+'" and Date <= "'+tdate+'") ');

    > DM1.Query2.SQL.Add('And (cancel like "취소") ');

    > DM1.Query2.SQL.add('Order by id');

    > DM1.Query2.open;

    >

    > 위 소스중 6째줄만 다음과 같이 고쳐봤는데 안돼거든요?

    > 뭐가 틀렸는지 말씀좀 해주세요

    > DM1.Query2.SQL.Add('And ((cancel like "취소") or (cancel like "가")) ');

    > 이렇게 하니까 "가"라고 입력된 필드만 검색되네요.

    > 한번만 더 알려주시면 안될까요?

    > 죄송합니다.

    >

    > 공성환 wrote:

    > > oracle에 기준하여...

    > > and cancle like '취소%' or cancle like '가%'

    > > 그리고 where 절에 ( )로 묶어주면 인덱스를 안타죠...

    > > 도움이 되었는지...

    > > 즐거운 하루 되세요...

    > >

    > >

    > > 한영수 wrote:

    > > > 소스는 다음과 같습니다.

    > > > DM1.Query2.Close;

    > > > DM1.Query2.sql.clear;

    > > > DM1.Query2.sql.add('Select id,baecha,date,cancel from baechalist');

    > > > DM1.Query2.sql.add('where baecha = "' + IntToStr(sunbun3)+'"');

    > > > DM1.Query2.Sql.Add('And (Date >= "'+ fdate+'" and Date <= "'+tdate+'") ');

    > > > DM1.Query2.SQL.Add('And (cancel like "취소") ');

    > > > DM1.Query2.SQL.add('Order by id');

    > > > DM1.Query2.open;

    > > >

    > > > 위 소스는 cancel이라는 칼럼에서 "취소"라는 글씨가 있는 필드만 검색하는 것인데

    > > > 여기다 "취소"와 예를 들어 "가"라는 글씨가 있는 필드를 함께 검색하기 위해서는

    > > > ("취소"또는 "가"라는 글씨가 있는 필드를 함께 검색하기 위해서는) 어케해야 하는지

    > > > 고수님들 알려주시기 바랍니다. 바쁘시더라도

    > > >