查询中的通配符在 Access * 和 Ansi % 之间随机切换

Posted

技术标签:

【中文标题】查询中的通配符在 Access * 和 Ansi % 之间随机切换【英文标题】:Wildcard characters in queries randomly switching between Access * and Ansi % 【发布时间】:2009-10-27 14:28:05 【问题描述】:

背景:

我有一个 Access 2007 应用程序,它的表单构建了一个过滤器字符串以传递给一个使用存储查询的报表。

在访问选项中,我为该数据库选中了“SQL Server 兼容语法 (ANSI 92)”,并且过滤器字符串包含一个带有 % 通配符的 LIKE 子句。

问题:

当我保存或打开应用程序时(不确定确切原因),有效的通配符语法会从需要 % 切换到 *,或返回。我知道这一点,因为我的查询停止工作。

我的尝试:

我对通配符进行了查找/替换,它工作了一段时间,然后又重新发生,没有对查询或过滤器进行任何重大更改。

大量的紧凑型/维修没有任何区别。

有什么想法吗?

【问题讨论】:

嗯,难倒的不止我一个?代表我侮辱 Access 至少会让我感觉更好。 :7 有什么理由需要 ANSI-92 语法吗?您是否打算升级到 SQL Server?如果是这样,为什么要打扰?使用 Access 的旧“ANSI-89”SQL 方言将 ODBC 和 DAO 与 SQL Server 一起使用时,我没有遇到任何问题。我不知道为什么会出错,但为什么要与之抗争,而不是仅仅使用 Access 原生的东西,而不是作为“兼容性”模式添加(显然很不完美)? 看起来它“忘记了”它是为 ANSI 设置的。我使用了一段时间,它停止使用 % 通配符查找。我将它们更改为 *,它可以工作。关闭/重新打开应用程序会提醒它使用 ANSI,然后我必须将通配符设置回 %。 感谢您的回复,大卫。我的原因是我知道并喜欢 ANSI SQL 语法。没有打算升迁(但总是有可能),所以为什么要打扰?是一个好问题...我想我不喜欢旧的/非标准的,但我已经有足够的头痛而不是纯粹主义者。感谢实用主义!也就是说,这是一个访问错误吗?很高兴知道其他人在 ANSI 模式下是否遇到过类似的 Access 问题。 【参考方案1】:

如果您仅将ANSI-92 Query Mode 用于替代通配符(而不是它提供的增强型SQL DDL 和DCL SQL 语法),那么请考虑使用ALIKE 关键字代替LIKE 关键字。

优点是您可以在任一查询模式中使用 ANSI-92 查询模式通配符。轻微的缺点是ALIKE 不受官方支持,这意味着它可能会在未来的引擎版本中消失(尽管我自己认为这是低风险)。

【讨论】:

以上是关于查询中的通配符在 Access * 和 Ansi % 之间随机切换的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 在 MS-Access 中的查询中使用带有通配符的 LIKE 运算符

MS Access 07 - JOIN 查询中的通配符

MS Access SQL 中的通配符

如何让 Visual Studio 2015 使用 Access 2010 LIKE 通配符

Web - Access偏移溢注

ASP .NET Core 中的 CORS 问题 - 响应中的“Access-Control-Allow-Origin”标头的值不能是通配符 '*