我要实现一个查询语句,例如select * from person where name like %王%.其中,name是一个tedit的text值,而王也是一个tedit的text值,请高手指点!谢谢,在线等。

解决方案 »

  1.   

    with Query do
    begin
      Close;
      SQL.Text := 'Select * from person where :f1 like :f2';
      ParamByName('f1').asstring := edit1.text;
      ParambyName('f2').asstring := '%' + edit2.text + '%';
      Open;
    end;
      

  2.   

    'select * from person where '+tedit.text+' like '+'%'+''''+tedit.text+''''+'%';
      

  3.   

    var
      sqlstr:string;
    begin
     sqlstr:='select * from person where name like '''+'%'+edit1.text+'%'+'''; query1.close;
     query1.sql.clear;
     query1.sql.add(sqlstr);
     query1.open;end;
      

  4.   

    select * from '''+tedit.Text+''' where name like ''%'+edit1.Text+'%''
      

  5.   

    sql.text:='select * from person where name like '+'%'+#39+trim(edit.text)+#39+'%';
    其中#39代表引号。
    出事了喊我。
      

  6.   

    sql.text:='select * from person where '+QuotedStr(tedit.text)+' like '+
    QuotedStr('%'+trim(edit.text)+'%');
      

  7.   

    支持 S.F.(吃青春饭的) 。
    虽然看上去程序多了点,但是结构清晰。
    当然,对于SQL非常熟的就另当别论了:)
      

  8.   

    seleADOQuery1->SQL->Add("select * from sales where title_id like '%"+Edit1->Text+"%'");
      

  9.   

    ADOQuery1->SQL->Add("select * from sales where title_id like '%"+Edit1->Text+"%'");
    这个
      

  10.   

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(format('select * from person where name like ''%s''',[ '%'+TEdit.Text+'%']));
    ADOQuery1.Open;
      

  11.   

    with Query do
    begin
      Close;
      SQL.Text := 'Select * from person where :f1 like :f2';
      ParamByName('f1').asstring := edit1.text;
      ParambyName('f2').asstring := '%' + edit2.text + '%';
      Open;
    end;要知道为什么要这么写吗?用参数的形式赋值可以避免sql 漏洞;因为单引号的问题;如果知道什么叫做 SQL 注入漏洞的同志就应该明白我说的意思。delphi的parambyname的形式可以自动处理单引号;如果要用字符串+++的形式,那么必须用替换函数将值内的单引号全部替换为双个,否则sql出错.