首页 > 解决方案 > Microsoft Access 数据库引擎 2016 - 在 2010 中正常工作的某些 SQL 查询出现问题

问题描述

我有一个使用连接字符串在 32 位中运行良好的应用程序:

Driver={Microsoft Access Driver (*.mdb)}; Dbq=MyDatabase.mdb; 

在未安装 Office 的 PC 上使用 C++ 中的 ADO。

我已将其转换为 x64,并且我相信无论主机 PC 是否安装了 x64 Office,我都需要安装某种形式的 Access 驱动程序。所以我抓住Microsoft Access Database Engine 2016 Redistributable并安装它。

一般来说,一切正常,但某些 SQL 查询失败。最引人注目的是那些使用LIKE '%somevalue%'- 现在我知道那%是 ANSI-92,但正如我所说,它工作正常,所以假设它与 ADO 相关(我可以将其更改为ALIKE我猜的)。

我不明白的是,如果我安装 Access Database Engine 2010,那么一切都按预期工作。Access Database Engine 2016 中似乎有些不同。我确实查找了一些发行说明/重大更改,但找不到任何东西。

所以我的问题是在 Microsoft Access 数据库引擎 2016 中解析 SQL 的方式是否发生了变化,我是否应该让客户安装 2010 版本?

注意:另一个似乎失败的查询是带有Yes/No字段的表。我有一个查询来检查:field <> 0这会引发异常。

更新:如果我安装 Microsoft Access 2016 运行时,那么一切似乎都可以正常工作。所以这个问题似乎特定于 Microsoft Access Database Engine 2016

总而言之:

No Office Installed: Installed Access 2016 x64 Database Engine: Query FAILS
No Office Installed: Installed Access 2010 x64 Database Engine: Query PASSES
32bit Office Installed: Installed Access 2016 x64 Database Engine: Query FAILS
32bit Office Installed: Installed Access 2010 x64 Database Engine: Query PASSES
x64 Office Installed: Installed Access 2016 x64 Database Engine: Query PASSES

查询在哪里:

SELECT * from sometable WHERE somefield LIKE '%ABC%';

设置是:

Window 10 Version 1909
32 bit Office: Microsoft Office MSO 16.0.12325.20280 32bit 
64 bit Office: Microsoft Office MSO 16.0.12325.20280 64bit

从这里访问数据库引擎 (x64):microsoft.com/en-us/download/details.aspx ?id=54920

我的应用是 x64

标签: ms-accessms-access-2016

解决方案


您是使用 SQL Server 作为后端数据库,还是使用 Access?
在 SQL Server 中,% 是通配符。

在纯 Access 环境中,通配符标准通常是 *
可能有一个设置可以改变这个,但我不记得了。

参考: https: //support.office.com/en-us/article/like-operator-b2f7ef03-9085-4ffb-9829-eef18358e931


推荐阅读