3 回答
TA贡献1891条经验 获得超3个赞
直接的答案是通配符的行为取决于所使用接口的ANSI查询模式。
ANSI-89查询模式(“传统模式”)使用*
字符,ANSI-92查询模式(“ SQL Server兼容模式”)使用%
字符。这些模式特定于ACE / Jet,并且仅与ANSI / ISO SQL-89和SQL-92标准具有相似之处。
ADO接口(OLE DB)始终使用ANSI-92查询模式。
DAO接口始终使用ANSI-89查询模式。
使用ODBC时,可以通过ExtendedAnsiSQL标志显式指定查询模式。
从2003版本开始的MS Access用户界面可以使用任何一种查询模式,因此在任何给定时间都不要假设它是另一种(例如,在验证规则中不要使用特定于查询模式的通配符)。
ACE / Jet SQL语法具有一个ALIKE
关键字,无论接口的查询模式如何,该关键字都允许使用ANSI-92查询模式字符(%
和_
),但是具有ALIKE
关键字与SQL-92不兼容的轻微缺点(但是ALIKE
仍具有高度可移植性) 。但是,主要缺点是,我了解该ALIKE
关键字不受官方支持(尽管我无法想象它很快就会消失或改变行为)。
TA贡献1848条经验 获得超2个赞
通过ODBC访问Jet,我不清楚应该使用什么通配符。我假设使用自然的Jet SQL(* /?),但是由于我从不通过ODBC使用Jet数据,所以我不能说。
正如Remou所引用的那样,在Access中,在代码中,这取决于您使用的是哪种数据访问接口-ADO(在Access中没有人应使用该接口),而您使用%/ _,而使用DAO(Jet的本机接口层) ),则使用Jet的本机通配符(* /?)。
在更高版本的Access中,在Access中执行SQL是一个例外。我不知道是Access 2002还是2003添加了它,但是如今,您可以打开ANSI SQL 92兼容模式。如果这样做,通配符将变为%/ _而不是* /?。但是能够选择ANSI模式仅适用于Access本身-正如有一天告诉我们的那样,您必须选择不同的数据接口库以使用不同的SQL模式,而ADO使用92和DAO和ODBC 89。
- 3 回答
- 0 关注
- 491 浏览
添加回答
举报