select * from tablename where 编号 like '0100%' and 姓名 like '王%'
with ADOQuery do begin Close; SQL.Text :=' select * from tablename where 编号 like :BianHao and 姓名 like :XingMing' Parameters.ParamByName('BianHao').AsString :=trim(edit1.text); Parmeters.ParamByName('XingMing').AsString :=trim(edit2.text); Open; end;
希望你看了下面的说明对你有所帮助,如果问题解决别忘了给分噢.Transact-SQL 参考 LIKE 确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。与使用 = 和 != 字符串比较运算符相比,使用通配符可使 LIKE 运算符更加灵活。如果任何参数都不属于字符串数据类型,Microsoft? SQL Server? 会将其转换成字符串数据类型(如果可能)。语法 match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]参数 match_expression任何字符串数据类型的有效 SQL Server 表达式。Patternmatch_expression 中的搜索模式,可以包含下列有效 SQL Server 通配符。通配符 描述 示例 % 包含零个或更多字符的任意字符串。 WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名。 _(下划线) 任何单个字符。 WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。 [ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。 WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。 [^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。 WHERE au_lname LIKE 'de[^l]%' 将查找以 de 开始且其后的字母不为 l 的所有作者的姓氏。 Escape_character字符串数据类型分类中的所有数据类型的任何有效 SQL Server 表达式。Escape_character 没有默认值,且必须仅包含一个字符。结果类型 Boolean结果值 如果 match_expression 匹配指定模式,LIKE 将返回 TRUE。注释 当使用 LIKE 进行字符串比较时,模式字符串中的所有字符都有意义,包括起始或尾随空格。如果查询中的比较要返回包含"abc "(abc 后有一个空格)的所有行,则将不会返回包含"abc"(abc 后没有空格)的列所在行。但是可以忽略模式所要匹配的表达式中的尾随空格。如果查询中的比较要返回包含"abc"(abc 后没有空格)的所有行,则将返回以"abc"开始且具有零个或多个尾随空格的所有行。由于数据存储方式的原因,使用包含 char 和 varchar 数据模式的字符串比较可能无法通过 LIKE 比较。了解每种数据类型的存储方式以及导致 LIKE 比较失败的原因十分重要。下面的示例将局部 char 变量传递给存储过程,然后使用模式匹配查找某个作者的所有著作。在此过程中,作者的姓将作为变量传递。
我想通过一个表的某个字段来查询出相应的一条记录!我用一个Edit1来输入查询的条件, 有两种情况:1,输入的查询条件完全匹配。 2,输入的查询条件模糊或者不匹配。我是这样做的: with Adoquery1 do begin close; sql.clear; sql.add('select * from 表'); sql.add(' where 字段 like '+'%'+trim(Edit1.text)+'%');//我是这样做的,可是程序报语法错误,怎么办?主要是想实现模糊查询。 open; end;
sql.add(' where 字段 like '+'''%'''+trim(Edit1.text)+'''%''');
在combobox中加入所有字段, zdm:=combobox.text; sql.Add('select * from 表名 where ' + zdm + ' like ''' + '%' + trim(edit.text) + '%' '''')
begin
Close;
SQL.Text :=' select * from tablename where 编号 like :BianHao and 姓名
like :XingMing'
Parameters.ParamByName('BianHao').AsString :=trim(edit1.text);
Parmeters.ParamByName('XingMing').AsString :=trim(edit2.text);
Open;
end;
LIKE
确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。与使用 = 和 != 字符串比较运算符相比,使用通配符可使 LIKE 运算符更加灵活。如果任何参数都不属于字符串数据类型,Microsoft? SQL Server? 会将其转换成字符串数据类型(如果可能)。语法
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]参数
match_expression任何字符串数据类型的有效 SQL Server 表达式。Patternmatch_expression 中的搜索模式,可以包含下列有效 SQL Server 通配符。通配符 描述 示例
% 包含零个或更多字符的任意字符串。 WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名。
_(下划线) 任何单个字符。 WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。
[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。 WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。
[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。 WHERE au_lname LIKE 'de[^l]%' 将查找以 de 开始且其后的字母不为 l 的所有作者的姓氏。
Escape_character字符串数据类型分类中的所有数据类型的任何有效 SQL Server 表达式。Escape_character 没有默认值,且必须仅包含一个字符。结果类型
Boolean结果值
如果 match_expression 匹配指定模式,LIKE 将返回 TRUE。注释
当使用 LIKE 进行字符串比较时,模式字符串中的所有字符都有意义,包括起始或尾随空格。如果查询中的比较要返回包含"abc "(abc 后有一个空格)的所有行,则将不会返回包含"abc"(abc 后没有空格)的列所在行。但是可以忽略模式所要匹配的表达式中的尾随空格。如果查询中的比较要返回包含"abc"(abc 后没有空格)的所有行,则将返回以"abc"开始且具有零个或多个尾随空格的所有行。由于数据存储方式的原因,使用包含 char 和 varchar 数据模式的字符串比较可能无法通过 LIKE 比较。了解每种数据类型的存储方式以及导致 LIKE 比较失败的原因十分重要。下面的示例将局部 char 变量传递给存储过程,然后使用模式匹配查找某个作者的所有著作。在此过程中,作者的姓将作为变量传递。
有两种情况:1,输入的查询条件完全匹配。
2,输入的查询条件模糊或者不匹配。我是这样做的: with Adoquery1 do
begin
close;
sql.clear;
sql.add('select * from 表');
sql.add(' where 字段 like '+'%'+trim(Edit1.text)+'%');//我是这样做的,可是程序报语法错误,怎么办?主要是想实现模糊查询。
open;
end;
zdm:=combobox.text;
sql.Add('select * from 表名 where ' + zdm + ' like ''' + '%' + trim(edit.text) + '%' '''')
如果query1.active:=true;时dbgrid显示有字段无数据,就是查询结果为空集
如果query和dbgrid 都没有永久字段查询后dbgrid 的title 显示有字段名,说明语句已执行并正确返回,只是为空集,即没有符合条件的记录,如果dbgrid没有title说明sql语句没有执行这是个判断问题所在的方法