我要对一个字段查询
一个edit输入框用来输入查询值,我想这样做
比如edit输入框里输入“三明;南平;大湖”
这样,我就要查到这个字段里分别包含三明或南平或大湖这三个词的记录。
新手,不知道怎么入手,请高手请教!

解决方案 »

  1.   

    1,通过程序把3个词分开(可以遇到‘;’就存到一个string中)
    2,select * from table
       where 字段=三明 or 字段=南平 or 字段=大湖
    3,给分
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var strTmp:string;
    stringlistTmp:TstringList;
    strSql:string;
    I:Integer;
    beginstringlistTmp:=TstringList.Create;
    strTmp:='三明;南平;大湖';
    strTmp:=stringreplace(strTmp,';',#13,[rfReplaceAll]);
    stringlistTmp.CommaText :=  strTmp;
    strSql:='Select * from Table where ';
    for I := 0 to stringlistTmp.Count -1 do
    begin
      strSql := strSql+' Field = '+quotedstr(stringlistTmp[i])+' or';
    end;
    stringlistTmp.Free;
    if Rightstr(strSql,2)='or' then
      strSql:=leftstr(strSql,length(strSql)-2);memo1.lines.Add(strSql);
    end;
      

  3.   


    var
      tmp,sql: String;
    begin
      tmp := Edit1.Text;
      sql := 'select * from table where field =';
      while(Pos(';',tmp) <> 0) do
      begin
        sql := sql + Copy(tmp, 1, pos(';', tmp) -1) + ' field = ';    tmp := Copy(tmp, pos(';', tmp) + 1, Length(tmp) - pos(';', tmp));
      end;
      sql := sql + tmp;
      

  4.   

    var
      tmp,sql: String;
    begin
      tmp := Edit1.Text;
      sql := 'select * from table where field =';
      while(Pos(';',tmp) <> 0) do
      begin
        sql := sql + Copy(tmp, 1, pos(';', tmp) -1) + ' or field = ';    tmp := Copy(tmp, pos(';', tmp) + 1, Length(tmp) - pos(';', tmp));
      end;
      sql := sql + tmp;
      

  5.   

    SELECT * FROM tablename WHERE 字段 LIKE '%三明%' OR 字段 LIKE '%南平%' OR 字段 LIKE '%大湖%'
      

  6.   

    呵,晚了.var str1,sql :string
    begin
       str1:=Edit1.Text;
       str1:=stringreplace(str1,';','%'' OR 字段名 LIKE ''%',[rfReplaceAll]);
       str1:=' 字段名 LIKE ''%'+strTmp+'%''';
       SQL:='select * from 表名 where '+str1;
       ...
       ...
       ...
    end