为了账号安全,请及时绑定邮箱和手机立即绑定

Microsoft Jet通配符:星号还是百分号?

Microsoft Jet通配符:星号还是百分号?

一只名叫tom的猫 2019-09-26 14:55:59
Microsoft Jet通配符:星号还是百分号?在Microsoft Jet的LIKE运算符中,什么是正确的多字符通配符?什么设置会影响它(如果有)?我支持在Microsoft Jet(在Access数据库上)上运行的旧ASP应用程序,并且在LIKE运算符中使用%符号,但是我有一个客户在他的环境中显然有问题,因为%字符被理解为常规字符字符,并且我假设他的多字符通配符为*。另外,我几乎可以肯定,过去我使用*而不是%编写了带有查询的应用程序。最后,Microsoft Access(作为应用程序)也仅适用于*,而不适用于%(但我不确定它的适用性)。我只花了大约20分钟的时间在Internet上搜索,却没有任何有用的结果,因此我认为对stackoverflow进行询问会很有用。也许有人已经知道了,将潜在的答案保留在stackoverflow上比任何其他随机讨论论坛都要好。
查看完整描述

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关键字不受官方支持(尽管我无法想象它很快就会消失或改变行为)。


查看完整回答
反对 回复 2019-09-26
?
慕尼黑5688855

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。


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 491 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信