access ado 通配符的区别

access sql like 通配符

2014-11-12 10:05 skheda  |  浏览 645 次
SELECT * from pfile where features='什么' and remark in('搜索','得到') and pfilename like '*三个*'
这条语句在access可以正常执行得到结果, 可写到了MFC程序里,为毛搜索结果为空
2014-11-12 12:01 提问者采纳
Access查询中使用的默认语法是“Microsoft Jet SQL”,而ADO中使用的SQL语法是“ANSI SQL”。
这两种语法存在轻微的差别(中间还包含某些特殊函数和功能)并非完全兼容。其中通配符就不一样。对于多个字符,前者是 *  而后者是%  ; 对于单个字符,前者是 ?  而后者是_。

匹配字符               Microsoft Jet SQL        ANSI SQL

任何单个字符            ?                                  _(下划线)    

零个或多个字符         *                                  %    

解决楼主问题的办法是将SQL like运算符后面的 * 替换为 %

.....pfilename like '%三个%' 

这样就可以查到数据了。

当然我们也可以将ACCESS数据库查询的语法设置为兼容ANSI SQL(在ACCESS选项那里设置),但是这样做的话,编写SQL语句就要遵循ANSI SQL语法规则了。对于之前已经使用过的ACCESS数据库不建议这样做,因为很可能会导致原有编写的SQL查询失效,进而造成诸多不便。
 
   
 
   
    
    
提问者采纳
Form1.Adodc2.Recordset.Filter = "型号 like '%" &  a  & "%'"

顺便提一句:在Access中匹配任意字符的通配符并不是%,而是*。所以如果你用的是Access(因为你用的Jet.OLEDB驱动),这句代码应该是
Form1.Adodc2.Recordset.Filter = "型号 like '*" &  a  & "*'"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值