Access我遇到了个奇怪的模糊查询问题,所以不得以求教高手
ado连接access里类似这样的语句
sSql := 'select * from addr where AddrId like ''*'+edAddrId.Text+'*''';
然后我假定传值 edAddrId.Text='D'
所以sSql 就为:select * from addr where AddrId like '*D*'
在用delphi运行的时候没有一条记录返回,
用IsEmpty测试表示确实是没有检索到记录,
但是直接在access里面运行该sql的时候会查到六条记录
------------------
这不是我第一次遇到,上次在另一条like 语句时候也是这样的情况
求教:为什么及怎么解决,时间比较急,所以请大家多热心点帮忙,谢谢
ado连接access里类似这样的语句
sSql := 'select * from addr where AddrId like ''*'+edAddrId.Text+'*''';
然后我假定传值 edAddrId.Text='D'
所以sSql 就为:select * from addr where AddrId like '*D*'
在用delphi运行的时候没有一条记录返回,
用IsEmpty测试表示确实是没有检索到记录,
但是直接在access里面运行该sql的时候会查到六条记录
------------------
这不是我第一次遇到,上次在另一条like 语句时候也是这样的情况
求教:为什么及怎么解决,时间比较急,所以请大家多热心点帮忙,谢谢
sSql := 'select * from addr where AddrId like '+QuotedStr('%'+edAddrId.Text+'%');
%:代表多个任意字符
* 和 %的关系
pattern 中的字符 expression 中的匹配项
? 或 _(下划线) 任何单个字符
* 或 % 零个或多个字符
# 任何单个数字(0 — 9)
[charlist] 在 charlist 中的任何单个字符。
[!charlist] 不在 charlist 中的任何单个字符。 请注意,ANSI SQL 通配符 (%) 和 (_) 仅在 Microsoft® Jet 4.X 版本和 Microsoft OLE DB Provider for Jet 中才是有效的。如果用在 Microsoft Access 或 DAO 中,那么它们被视为文本。
希望能够有高手解答