免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1285 | 回复: 0
打印 上一主题 下一主题

Access中的sql语句与ADO的sql语句语法问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-23 23:55 |只看该作者 |倒序浏览
今天使用Access的时候发现,在Access里写模糊查询的SQL语句用的通配符是 * ,例如“select * from tbTest where col like '*dd*' ”,而在用ADO链接Access数据库的时候,进行模糊查询的通配符就是 % , 例如 “select * from tbTest where col like '%dd%' ”.一直不明白原因,后来看了MS的帮助才明白,原来是因为两个引擎不同,具体原因还是看下面MS帮助原文吧!

MS帮助原文:
Access 项目和数据访问页现使用 ANSI SQL-92 语法
适用于:
Microsoft Office Access 2003

[url=javascript:AlterAllDivs('block');]

全部显示[/url]
[url=javascript:AlterAllDivs('none');]

全部隐藏[/url]
适用于
Microsoft Office Access 2003
Microsoft Access 2002
在 Access 2002 或更高版本中,项目 (.adp) 和数据访问页仅支持 ANSI SQL-92 标准。这将影响您在 Access 项目中开发筛选表达式和查询的方式。结果数据集也和数据访问页上显示的不同。以前版本的 Access 支持 ANSI SQL-89 语法。有关 ANSI SQL-89 和 ANSI SQL-92 通配符语法之间的差别的详细信息,请参阅 Access 帮助。
[url=javascript:ToggleDiv('divExpCollAsst_1')]

Access 项目中的筛选和查询[/url]
Access 项目是为连接 Microsoft SQL Server 或 Microsoft SQL Server 2000 Desktop Engine(以前为 MSDE)的后端数据库而设计的。结构查询语言 (SQL) 是用于与关系型数据库配合工作的标准交互和编程语言。Transact-SQL 语言是 SQL Server 和 Desktop Engine 都使用的本机 SQL 语言。Transact-SQL 支持 ANSI SQL-92,它是最新的 SQL 标准。在 Access 2002 或更高版本中,项目必须使用 ANSI SQL-92 语法运行 SQL Server 数据的查询或筛选表达式。
Access 数据库使用 Jet Database Engine 来查询本机数据。Jet 支持 ANSI SQL-89 标准(以下简称 Jet SQL 语法)。Jet SQL 语法在几个方面与 ANSI SQL-92 标准不同。例如,Jet SQL 语法使用星号 (*) 作为多字符通配符,而 ANSI SQL-92 语法则使用百分号 (%)。
例如,要返回以字母 U 开头的国家/地区的所有客户,使用 Jet SQL 语法:
SELECT * FROM Customers WHERE Country Like U*
要返回以字母 U 开头的国家/地区的所有客户,使用 ANSI SQL-92 语法:
SELECT * FROM Customers WHERE Country Like U%
同样,Access 2002 或更高版本项目中的筛选表达式也使用 ANSI SQL-92 标准。如果您将以前版本的 Access 项目迁移至 Access 2002,应当检查所有表达式以确保返回所希望的结果。
例如,搜索 CustomerName = 'B*' 的宏表达式,不能找到所有以字母 B 开头的客户姓名,因为星号 (*) 不是 ANSI SQL-92 的通配符。要解决此问题,请修改宏表达式,改用百分号 (%) 通配符:CustomerName = 'B%'。
[url=javascript:ToggleDiv('divExpCollAsst_2')]

数据访问页上的结果数据集[/url]
Jet Database Engine 用于与 Access (.mdb) 数据库中的数据配合使用,它支持 ANSI SQL-89 标准。但是,Access 数据库中的数据访问页是通过使用 ActiveX Data Objects (ADO) 和 Jet OLEDB 提供者连接至 Jet 的。ADO 和 OLEDB 总是使用 ANSI SQL-92 语法。因此,数据访问页必须使用 ANSI SQL-92 语法。这意味着绑定到同一查询的窗体和页可能返回不同的结果数据集。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/15793/showart_345398.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP