如何使用SQL语句的动态参数方法实现模糊查询(50分)

  • 主题发起人 主题发起人 billxm
  • 开始时间 开始时间
query1.sql.clear;
query1.sql.add('select * from yourtable');
query1.sql.add('where name like ''%'+yourvar+'%''');
query1.open;
 
当然还有
query1.clear;
query1.sql.add('select * from yourtable');
query1.sql.add('where name = :name');
然后在params中可动态设置name值
 
建议使用RXLIB套件中的带宏功能(MACRO)功能的查询构件,
既支持参数,又支持宏,使用起来效果最好。比起在程序中
动态修改SQL语句要好多了
 
SQL.Add('select * from jgw where jgw.Bm =:jbm');
Query1.Parambyname('jbm').asstring:=edit1.text;
第一行语句中的jbm是参数,可以执行, 下面的语句
SQL.Add('select * from jgw where jgw.Bm like jbm%');
中,要求jbm是参数,通过edit1.text输入,如输入K,需查出
类似K,K11,KJI等的记录,但不要查出类似IK,3K的记录,
或者能否用findnearest,gotonearest来实现。
 
这样:
SQL.Add('select * from jgw where jgw.Bm Like :jbm');
Query1.Parambyname('jbm').asstring:=edit1.text+'%';
 
应该使用小天的方法,既然是模糊查询,当然得用like作字符串匹配,具体的SQl
语句我就不聱述了.而且该方法通用性,可移植性都不错.
 
%string 为左模糊
string% 为右模糊
%string% 为左右都模糊
 
上面的解决方法都是字符类型的数据,如果要实现数字等其它类型的模糊查询,可以把
其它类型的数据转换成字符型再利用上面的方法.
 
“_”通配一个字符;“%”通配所有的字符
Like 可以实现模糊查询;
当条件较多时,用 in or not in
请注意:
JET SQL中通配符用 * ?
标准SQL中通配符用 % _
 
补充sherman:
在使用参数时:
query1.close;
query1.parambyname('name').asstring := '%somestuff%';//if only one params or u know the act order params[0] is also avalible
query1.open;
 
多人接受答案了。
 
后退
顶部