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

我只花了大约 20 分钟在互联网上搜索,没有任何有用的结果,所以我认为在 stackoverflow 上提问会很有用。有人可能已经知道了,无论如何,最好将潜在的答案保留在 stackoverflow 上,而不是任何其他随机讨论论坛。

有帮助吗?

解决方案

直接的答案是通配符的行为取决于所使用的接口的 ANSI 查询模式。

ANSI-89 查询模式(“传统模式”)使用 * 字符,ANSI-92 查询模式(“SQL Server 兼容模式”)使用 % 特点。这些模式是 ACE/Jet 特有的,与 ANSI/ISO SQL-89 和 SQL-92 标准仅有短暂的相似之处。

ADO 接口 (OLE DB) 始终使用 ANSI-92 查询模式。

DAO 接口始终使用 ANSI-89 查询模式。

使用 ODBC 时,可以通过以下方式显式指定查询模式: 扩展AnsiSQL 旗帜。

从 2003 版本开始,MS Access 用户界面可以使用任一查询模式,因此不要在任何给定时间假设它是其中一种或另一种(例如不要在验证规则中使用特定于查询模式的通配符)。

ACE/Jet SQL 语法有一个 ALIKE 关键字,它允许 ANSI-92 查询模式字符 (%_)无论接口的查询模式如何,但是都有一个轻微的缺点 ALIKE 关键字不兼容 SQL-92(但是 ALIKE 仍然高度便携)。然而,主要的缺点是我了解 ALIKE 关键字不受官方支持(尽管我无法想象它会消失或很快改变行为)。

其他提示

如果你使用DAO,使用星号(和问号的单一符号占位符)。如果您使用ADO,使用百分号(和下划线)。

您可能会发现这个有用的:

http://msdn.microsoft.com/ EN-US /库/ aa140104(office.10)的.aspx

在查询设计网格并与DAO使用*,与ADO和ASP,使用%

通过ODBC访问喷,这不是很清楚,我应该用什么通配符。我认为自然的Jet SQL的人(* /?),但因为我从来没有通过ODBC使用Jet数据,我不能说。

在Access中,正如文章Remou援引说,在代码中,它取决于你用什么样的数据访问接口 - ADO(没人应使用内访问的),你用%/ _,同时与DAO(Jet的本地接口层),可以使用Jet的天然通配符(* /?)。

有在访问执行内访问SQL的更新版本的异常。我不知道这是否是Access 2002或2003的加入,但是现在,还有就是你可以打开一个ANSI SQL 92兼容模式。如果你这样做,通配符变得%/ _代替* / ?.但是,能够选择ANSI模式只适用于访问本身 - 作为onedaywhen通知我们,你要选择不同的数据接口库使用92和DAO和ODBC 89使用不同的SQL模式,与ADO

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top