Tag: 模糊预览模式: 普通 | 列表

Delphi与SQL模糊查询

Delphi代码
  1. 模糊查询  
  2.   
  3.   
  4. 1.用变量进行模糊查询  
  5. 对数据进行模糊查询主要用SQL语句LIKE来实现。该语句放在Where语句的后面,使用标识符“%”、“_”、“[]”、“[^]”对数据进行模糊查询。  
  6. 例如,对姓名为“王”,并且姓名为两个字的学生信息。  
  7. Select * FROM MR_Student where 姓名 like '林_'  
  8. 例如,查询数学成绩在70~79之间的学生信息。  
  9. Select * FROM MR_Student where 数学 like '7[0123456789]'  
  10. 例如,查询除三年级二班的所有学生信息。  
  11. Select * FROM MR_Student where 班级 like '三年[^二]_'  
  12. 例如,查询三年级的所有学生信息。  
  13. Select * FROM MR_Student where 班级like '三*'  
  14. 下面对姓名进行模糊查询,只要在“姓名”文本框中输入名字中的任意一个字,便可以查找相关人员的信息。  
  15. 操作步骤如下:  
  16. 1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TDateTimePicker、TDataSource、TButton和TDBGrid等组件。  
  17. 2)主要程序代码如下:  
  18.   with ADOQuery1 do  
  19.   begin  
  20.     close;  
  21.     SQL.Clear;  
  22.     SQL.Add('Select * FROM MR_Student where 姓名 like '+''''+'%'+Trim(edit1.Text)+'%'+'''');  
  23.     open;  
  24.   end;  
  25. 上面的SQL语句也可以写成如下形式:  
  26. SQL.Add('Select * FROM MR_Student where 姓名 like ''%'+Trim(edit1.Text)+'%''');  
  27.   
  28.   
  29. 2.使用参数进行模糊查询  
  30. 在Delphi中进行模糊查询时,可以用TADOQuery组件来向SQL语句中传递参数。  
  31. 其格式为:“Like:参数名”。  
  32. 利用TADOQuery组件的ParamByName方法将值传递给参数。  
  33. * 注意:在Like后面必须加空格。  
  34. 下面用TADOQuery组件进行参数传递,并对数据进行模糊查询。  
  35. 操作步骤如下:  
  36. 1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TDateTimePicker、TDataSource、TButton和TDBGrid等组件。  
  37. 2)主要程序代码如下:  
  38.   with ADOQuery1 do  
  39.   begin  
  40.     close;  
  41.     SQL.Clear;  
  42.     SQL.Add('Select * FROM MR_Student where 姓名 like :aa');  
  43.     Parameters.ParamByName('aa').Value:='%'+trim(Edit1.text)+'%';  
  44.     open;  
  45.   end;  
  46.     
  47.     
  48. 3.复杂模糊查询  
  49. 在对信息进行模糊查询的时候,也可以通过逻辑运算符(AND、OR、NOT)插入其他的查询条件来提高查询的速度。  
  50. 下面是模糊查询和其他查询方法相结合而形成的复杂模糊查询。  
  51. 操作步骤如下:  
  52. 1)运行Delphi,在窗体中添加TADOConnection、TADOQuery、TDateTimePicker、TDataSource、TButton、TComboBox和TDBGrid等组件。  
  53. 2)主要程序代码如下:  
  54.   if CheckBox1.Checked=true then  
  55.    Str := ' and 班级='+''''+ComboBox1.Text+''''  
  56.   else  
  57.    ComboBox1.Enabled := False;  
  58.   with ADOQuery1 do  
  59.   begin  
  60.    close;  
  61.    SQL.Clear;  
  62.    SQL.Add('Select * FROM MR_Student where 姓名 like ''%'+Trim(edit1.Text)+'%'''+Str);  
  63.    open;  
  64.   end;  

Tags: Delphi SQL 模糊 查询

分类:Delphi | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 39

sql中生成查询的模糊匹配字符串  

SQL代码
  1. sql中生成查询的模糊匹配字符串  
  2.   
  3. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_Sql]'and xtype in (N'FN', N'IF', N'TF'))  
  4. drop function [dbo].[f_Sql]  
  5. GO  
  6. if exists (select * from dbo.sysobjects where id = object_id(N'[序数表]'and OBJECTPROPERTY(id, N'IsUserTable') = 1)  
  7. drop table [序数表]  
  8. GO  
  9. --为了效率,所以要一个辅助表配合  
  10. select top 1000 id=identity(int,1,1) into 序数表  
  11. from syscolumns a,syscolumns b  
  12. alter table 序数表 add constraint pk_id_序数表 primary key(id)  
  13. go  
  14. /*--根据指定字符串生成查询的模糊匹配字符串  
  15. 条件连接的关键字为 and,or  
  16. 可以任意指定括号  
  17. 生成的条件表达式为 like 模糊匹配  
  18. --邹建 2004.08(引用请保留此信息)--*/  
  19. /*-- 调用示例  
  20. --调用示例  
  21. select A=dbo.f_Sql('(Web or HTML or Internet) and (Programmer or Developer)','content')  
  22. select B=dbo.f_Sql('Web or HTML or Internet','content')  
  23. select C=dbo.f_Sql('(Web and HTML)','content')  
  24. select D=dbo.f_Sql('Web','content')  
  25. --*/  
  26. -- 示例函数  
  27. create function f_Sql(  
  28. @str Nvarchar(1000), --要检索的字符串  
  29. @fdname sysname --在那个字段中检索  
  30. )returns Nvarchar(4000)  
  31. as  
  32. begin  
  33. declare @r Nvarchar(4000)  
  34. set @r=''  
  35. select @r=@r+case  
  36. when substring(@str,id,charindex(' ',@str+' ',id)-id) in('or','and')  
  37. then ' '+substring(@str,id,charindex(' ',@str+' ',id)-id)+' '  
  38. when substring(@str,id,1)='('  
  39. then '(['+@fdname+'] like ''%'  
  40. +substring(@str,id+1,charindex(' ',@str+' ',id)-id-1)  
  41. +'%'''  
  42. when substring(@str,charindex(' ',@str+' ',id)-1,1)=')'  
  43. then '['+@fdname+'] like ''%'  
  44. +substring(@str,id,charindex(' ',@str+' ',id)-id-1)  
  45. +'%'')'  
  46. else '['+@fdname+'] like ''%'  
  47. +substring(@str,id,charindex(' ',@str+' ',id)-id)  
  48. +'%'''  
  49. end  
  50. from 序数表  
  51. where id<=len(@str)  
  52. and charindex(' ',' '+@str,id)-id=0  
  53. return(@r)  
  54. end  
  55. go   
  56. 详细出处参考:http://www.jb51.net/article/8732.htm  

Tags: SQL 查询 模糊 字符串

分类:MSSQL | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 41