说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

DataSet的Filter为什么支持Like不支持not like?

编辑:说三道四文库 发布时间:2018-07-20 11:13
HTML文档下载 WORD文档下载 PDF文档下载
try
    DataSet.Filter := Filter;
    if Filter = '' then DataSet.Filtered := False
    else DataSet.Filtered := True;
  except
    raise Exception.Create('表达式错误');

Filter := 'field1 like ''1%'''时一切ok
Filter := 'field1 not like ''1%'''时就报表达式错误

假如支持not like,那么not like ‘200410%’ 应该是什么呢?这是不可确定的。
是‘开头不包含200410’啊,和sql语句一样,怎么会不可确定呢
没这样用过,
我也遇到了这个问题,郁闷中。。想别的办法吧!
Edit1.Text := '...';
DataSet1.Filter := 'NOT (FieldName LIKE ''%' + Edit1.Text + '%'') ';
DataSet1.Filtered := true;
我想這是考慮到效率問題。當使用NOT LIKE 或者 <> 等等時,需要進行全表掃描。這樣,對於大的表效率會非常低效,比如記錄在萬級或以上時。通常來説,我們在寫普通的SQL語句時,都會避免使用類似語法。
'NOT (FieldName LIKE ''%' + Edit1.Text + '%'') '是不行的

效率不高是肯定的,但是客户就是有这个需求。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘