No.1 for SQL SERVER
SUBSTRING(Field1, 1, 1) <> '2'

解决方案 »

  1.   

    No.2
    //for paradox/sql server
    NOT LIKE '2%'
    //for access
    NOT LIKE '2*'
      

  2.   

    我的意思是:
       query.close;
       query.sql.clear;
       query.sql.add(delete tablename where 表达式);
       query.execsql;------------------------------------------------------------
    表达式的内容就是:COPY(field1,1,1)<>'2'但是这样写,BDE不支持。
    我说的够明白了吧。
      

  3.   

      query.close;
      query.sql.clear;
      query.sql.add('delete tablename where NOT LIKE ''2%''');
      query.execsql;
      

  4.   

      with query,SQL do begin
        clear;
        add('delete tablename where substr(Field1,1,1)<>''2''');
        execsql;
      end;
      

  5.   

    同意sunnyheart(晴朗的心) 的做法
      

  6.   

    DELETE TABLENAME WHERE LEFT(FIELDS,1)<>'2'即可
      

  7.   

    query1.close;
    query1.sql.text := 'delete from <table_name> where (substring(field1, 1, 1) <> ''2'')';
    query1.execsql;
      

  8.   

      query.close;
      query.sql.clear;
      query.sql.add(delete tablename where substring(field1,1,1)<>'2');
      query.execsql;
      

  9.   

    用SQL SERVER的话可以这样: 
      query.close;
      query.sql.clear;
      query.sql.add(delete tablename where left(field1,1,1)<>'2');
      query.execsql;
     
      

  10.   


    delete from table where substring(field1,1,1)<>'+''''+'2'+''''
      

  11.   

    to zswang(伴水)(被黑中):  请问
            1.如何用变量替换 tablename .
            2.如何替换%2,也就是说具体怎么用.
       谢谢!
      

  12.   

    我修改为这样:query.close;
      query.sql.clear;
      query.sql.add('delete ''d:\test.dbf'' where substring(custnub,1,1)<>''2''');
      query.execsql;还是不能通过 !再看看 !
      

  13.   

      query.close;
      query.DatabaseName := 'D:\';
      query.sql.clear;
      query.sql.add('delete test.dbf where substring(custnub,1,1)<>''2''');
      query.execsql;
      

  14.   

      query.close;
      query.databasename := 'D:\';
      query.sql.clear;
      query.sql.add(Format('delete %s where NOT LIKE ''2%%''', [tablename]));
    //                            ~~~                   ~~两个%为一个%
      query.execsql; 
      

  15.   

    应该是:
    strSQL:='delete from'+tablename+' where substring(custnub,1,1)<>'+'''%2''';
    Query.SQL.Add(strSQL);
      

  16.   

    如果是ORACLE则可以用:
    select * from TABLE_NAME  where substr(field1,1,1)<>'2'
      

  17.   

      query.close;
      query.databasename := 'D:\';
      query.sql.clear;
      query.sql.add(Format('delete %s where NOT LIKE ''2%%''', ['test.dbf']));
      query.execsql;运行后依旧报错:                'Invalid use of keyword'
                     Token: test.dbf究竟是什么错误 ???
      

  18.   

    而且,我这样做都不能通过 :  
      query.close;
      query.sql.clear;
      query.sql.add('select * from ''d:\test.dbf'' where substring(custnub,1,1)<>''2''');
      query.execsql;错误提示:                'Invalid use of keyword'
                    Token: ,1,1)<>'2'为什么 ?
    为什么 ??
      

  19.   

      query.close;
      query.databasename := 'D:\';
      query.sql.clear;
      query.sql.add(Format('delete %s where 字段名到什么地方去了 NOT LIKE ''2%%''', ['test.dbf']));
      query.execsql;
      

  20.   

    query.sql.add(Format('delete %s where custnub NOT LIKE ''2%%''', ['test.dbf']));
      
      

  21.   

    Query1.Close;
    Query1.SQL.Clear;
    with Query1.SQL do
    begin
      Add('delete from 表名 ');
      Add('where field1 NOT Like '2%');
      prepare;
      open;
    end;
      

  22.   

    paradox下通过
      query.close;
      query.sql.clear;
      query.sql.add('delete 表名 where substring(Field1 from 1 for 1)<>''2''');
      query.execsql;
      

  23.   

    用了你们所有的方法,错误提示都一样:   Token: test.dbf
      

  24.   

    在TBGrid里显示正常,但是用Foxpro看,都只是加了删除标记记录 !
      

  25.   

    foxpro下,用删除命令删除记录,删除记录都带标记的,你还可以恢复这些删除的记录
    我忘了这些命令了.只能记得这些了.sorry