delphi模糊查询
小弟问个菜菜的问题:我现在有段查询代码:ifcheckbox2.Checked=truethenstrsql:=strsql+'andname='+quotedstr(e...
小弟问个菜菜的问题:
我现在有段查询代码:
if checkbox2.Checked =true then
strsql:=strsql+' and name='+quotedstr(edit10.Text);
现在我想让这个具有模糊查询功能,如何修改?
如果解决有高分加!
谢谢各位解答,不过我用了几种方法,之后在软件查询都会提示"第一行'查询字段'附近语法有错",不知道是怎么回事情... 展开
我现在有段查询代码:
if checkbox2.Checked =true then
strsql:=strsql+' and name='+quotedstr(edit10.Text);
现在我想让这个具有模糊查询功能,如何修改?
如果解决有高分加!
谢谢各位解答,不过我用了几种方法,之后在软件查询都会提示"第一行'查询字段'附近语法有错",不知道是怎么回事情... 展开
5个回答
展开全部
if checkbox2.Checked =true then
strsql:=strsql+' and name like ''%'+quotedstr(edit10.Text)+'%''';
确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。与使用 = 和 != 字符串比较运算符相比,使用通配符可使 LIKE 运算符更加灵活。
通配符 描述 示例
% 包含零个或更多字符的任意字符串。 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 的所有作者的姓氏。
将通配符作为文字使用
可以将通配符模式匹配字符串用作文字字符串,方法是将通配符放在括号中。下表显示了使用 LIKE 关键字和 [ ] 通配符的示例。
符号 含义
LIKE '5[%]' 5%
LIKE '[_]n' _n
LIKE '[a-cdf]' a、b、c、d 或 f
LIKE '[-acdf]' -、a、c、d 或 f
LIKE '[ [ ]' [
LIKE ']' ]
LIKE 'abc[_]d%' abc_d 和 abc_de
LIKE 'abc[def]' abcd、abce 和 abcf
使用 ESCAPE 子句的模式匹配
可搜索包含一个或多个特殊通配符的字符串。例如,customers 数据库中的 discounts 表可能存储含百分号 (%) 的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,请指定由 WHERE comment LIKE '%30!%%' ESCAPE '!' 组成的 WHERE 子句。如果不指定 ESCAPE 和转义符,SQL Server 将返回所有含字符串 30 的行。
strsql:=strsql+' and name like ''%'+quotedstr(edit10.Text)+'%''';
确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。与使用 = 和 != 字符串比较运算符相比,使用通配符可使 LIKE 运算符更加灵活。
通配符 描述 示例
% 包含零个或更多字符的任意字符串。 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 的所有作者的姓氏。
将通配符作为文字使用
可以将通配符模式匹配字符串用作文字字符串,方法是将通配符放在括号中。下表显示了使用 LIKE 关键字和 [ ] 通配符的示例。
符号 含义
LIKE '5[%]' 5%
LIKE '[_]n' _n
LIKE '[a-cdf]' a、b、c、d 或 f
LIKE '[-acdf]' -、a、c、d 或 f
LIKE '[ [ ]' [
LIKE ']' ]
LIKE 'abc[_]d%' abc_d 和 abc_de
LIKE 'abc[def]' abcd、abce 和 abcf
使用 ESCAPE 子句的模式匹配
可搜索包含一个或多个特殊通配符的字符串。例如,customers 数据库中的 discounts 表可能存储含百分号 (%) 的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,请指定由 WHERE comment LIKE '%30!%%' ESCAPE '!' 组成的 WHERE 子句。如果不指定 ESCAPE 和转义符,SQL Server 将返回所有含字符串 30 的行。
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
展开全部
if checkbox2.Checked =true then
strsql:=strsql+' and name like '+’+quotedstr(edit10.Text)+’%‘+‘
strsql:=strsql+' and name like '+’+quotedstr(edit10.Text)+’%‘+‘
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样改:
strsql:=strsql+' and name like % '+quotedstr(edit10.Text)+'%';
like关键字就是实现模糊查询的。
strsql:=strsql+' and name like % '+quotedstr(edit10.Text)+'%';
like关键字就是实现模糊查询的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是sql,使用:
strsql:=strsql+' and name like % '+quotedstr(edit10.Text)+'%';
like关键字就是实现模糊查询的
不是,请使用正则表达式
strsql:=strsql+' and name like % '+quotedstr(edit10.Text)+'%';
like关键字就是实现模糊查询的
不是,请使用正则表达式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把0123,0258,0966,0718,1289转换成'0123','0258,'0966','0718','1289'使用如下查询来获得,不需要模糊查询。ADOQUERY1.SQL.ADD('SELECT
*
FROM
表名
WHERE
合同号
in
(''0123'',''0258',''0966'',''0718'',''1289'')');
*
FROM
表名
WHERE
合同号
in
(''0123'',''0258',''0966'',''0718'',''1289'')');
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询