当前位置:  开发笔记 > 数据库 > 正文

Microsoft Jet通配符:星号或百分号?

如何解决《MicrosoftJet通配符:星号或百分号?》经验,为你挑选了1个好方法。

Microsoft Jet中LIKE运算符中的正确多字符通配符是什么,以及哪些设置会影响它(如果有的话)?我支持在Microsoft Jet(在Access数据库上)上运行的旧ASP应用程序,它在LIKE运算符中使用%符号,但我有一个客户,他的环境显然有问题,因为%字符被理解为常规我认为他的多字符通配符是*.此外,我几乎可以肯定,在过去,我使用*代替%编写了查询应用程序.最后,Microsoft Access(作为应用程序)也只适用于*而不是%(但我不确定它是多么相关).

我只花了大约20分钟在互联网上搜索没有任何有用的结果,所以我认为在stackoverflow上问一下会有用.有人可能已经知道了,最好将堆栈溢出的潜在答案保留在任何其他随机讨论论坛上.



1> onedaywhen..:

直接的答案是通配符的行为取决于所使用的接口的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关键字没有得到官方支持(尽管我无法想象它会很快消失或改变行为).

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有