我的sql语句自动生成下面的样子:
DELETE FROM table WHERE and rule_ip ='' 
我发现这样子不对,需要替换成下面的样子:
DELETE FROM table WHERE and rule_ip is null我这样替换:sql:=StringReplace(sql,'='''',' IS NULL ',[rfReplaceAll]);结果怎么没有替换呢?

解决方案 »

  1.   

    帖子上写错了一行:
    我这样替换:sql:=StringReplace(sql,'=''''',' IS NULL ',[rfReplaceAll]); 
      

  2.   

    sql:=StringReplace(sql,'=''''',' IS NULL ',[rfReplaceAll]); 
      

  3.   

    少了一个单引号
    sql:=StringReplace(sql,'=''''',' IS NULL ',[rfReplaceAll]);
      

  4.   


    procedure TF_Main.btnTestClick(Sender: TObject);
    var
      sql: string;
    begin
    //
      sql := 'DELETE FROM table WHERE and rule_ip =''''';
      sql:=StringReplace(sql,'=''''',' IS NULL ',[rfReplaceAll]);
      showmessage( sql );
    end; 结果
    DELETE FROM table WHERE and rule_ip  IS NULL 
      

  5.   

    换一个思路就不必那么麻烦了,把你的SQL改成这样:
    DELETE FROM table WHERE and IsNull(rule_ip,'') =''
     
      

  6.   

    我语句没有问题的,本来那个and前面还有东西,我发帖的时候忘记把and删除。
      

  7.   


      sql:='DELETE FROM table WHERE rule_ip =''%s''';
      sql:=format(sql,['']);  StringReplace(sql,'=''''',' IS NULL ',[rfReplaceAll]);//这里不能替换  //test 上面仁兄的可以替换,为什么呢?
      delSql := 'DELETE FROM table WHERE rule_ip =''''';
      delSql:=StringReplace(delSql,'=''''',' IS NULL ',[rfReplaceAll]);
      showmessage( delSql );
      //
      

  8.   

    就是这的区别
    StringReplace(sql,'=''''',' IS NULL ',[rfReplaceAll]);
    sql:=StringReplace(sql,'=''''',' IS NULL ',[rfReplaceAll]);
    你没有把替换的结果赋给sql啊
      

  9.   

    youthon说的对,是我错了,我忘记赋值了。我以前也犯过这种错误,花了一些时间才发现。真是耽误大家时间啊。