有一个挑战,以下语句怎样写好呢?in (动态数组)那里怎样表示出来?
select * from TableA
where 条件1 in (动态数组)实际运行时是这样:
select * from TableA
where 姓名 in ('小红','小明','小东','小西' )"小红,小明,小东,小西"是动态数组里的元素但怎样表达出来呢?

解决方案 »

  1.   

    供参考
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      a: array of string;
      i: integer;
      str: string;
    begin
      setLength(a, 2);
      a[0] := '小红';
      a[1] := '小明';
      str := '(';
      for i := Low(a) to High(a) do
      begin
        str := str + '''' + a[i] + ''',';
      end;
      str := copy(str, 0, Length(str) - 1) + ')';  adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select * from test1 where id in');
      adoquery1.SQL.Add(str);
      adoquery1.Open;
    end;
      

  2.   

    var
      a: array of string;
      i: Integer;
      s: String;
    begin
      for i := Low(a) to High(a)-2 do 
      begin
        s := #39+a[i]+#39+',';
      end;
      s := #39+a[High(a)-1]+#39;
      Query.SQL.Text := 'select * from TableA  where 姓名 in ('+s+')';end;
      

  3.   

    楼上的两位说的够明白的了,主要意思就是在query的条件部分要事先准备好,用个字符串整理好,这样就ok了