delphi模糊查询

小弟问个菜菜的问题:我现在有段查询代码:ifcheckbox2.Checked=truethenstrsql:=strsql+'andname='+quotedstr(e... 小弟问个菜菜的问题:
我现在有段查询代码:
if checkbox2.Checked =true then
strsql:=strsql+' and name='+quotedstr(edit10.Text);
现在我想让这个具有模糊查询功能,如何修改?

如果解决有高分加!
谢谢各位解答,不过我用了几种方法,之后在软件查询都会提示"第一行'查询字段'附近语法有错",不知道是怎么回事情...
展开
 我来答
ElementWong
2007-03-12 · TA获得超过182个赞
知道小有建树答主
回答量:108
采纳率:0%
帮助的人:96.6万
展开全部
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 的行。
lsfh0000
2007-03-12 · TA获得超过295个赞
知道小有建树答主
回答量:331
采纳率:0%
帮助的人:265万
展开全部
if checkbox2.Checked =true then
strsql:=strsql+' and name like '+’+quotedstr(edit10.Text)+’%‘+‘
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guojingcha
2007-03-12 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.3万
采纳率:42%
帮助的人:9959万
展开全部
这样改:
strsql:=strsql+' and name like % '+quotedstr(edit10.Text)+'%';
like关键字就是实现模糊查询的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nobyte
2007-03-12 · 超过23用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:59.9万
展开全部
如果是sql,使用:
strsql:=strsql+' and name like % '+quotedstr(edit10.Text)+'%';
like关键字就是实现模糊查询的

不是,请使用正则表达式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梁蒙京奇胜
2019-09-16 · TA获得超过3453个赞
知道大有可为答主
回答量:3121
采纳率:28%
帮助的人:201万
展开全部
把0123,0258,0966,0718,1289转换成'0123','0258,'0966','0718','1289'使用如下查询来获得,不需要模糊查询。ADOQUERY1.SQL.ADD('SELECT
*
FROM
表名
WHERE
合同号
in
(''0123'',''0258',''0966'',''0718'',''1289'')');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式