ms-access - 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
解决方案
您是使用 SQL Server 作为后端数据库,还是使用 Access?
在 SQL Server 中,% 是通配符。
在纯 Access 环境中,通配符标准通常是 *
可能有一个设置可以改变这个,但我不记得了。
参考: https: //support.office.com/en-us/article/like-operator-b2f7ef03-9085-4ffb-9829-eef18358e931
推荐阅读
- python - 如何使用 pywsd.utils 对 .txt 文件而不是句子进行词形还原?
- python - 使用 time.strptime() 在 Python 中使用 AM/PM 解析日期时间字符串时出错
- javascript - React-Redux 应用程序:如何在我的页面上的这个字段中只显示部分数据?
- java - 在 ExecutorService 上发布的 Mono/Flux 未按预期终止
- java - 如何在弹出菜单中动态添加单选按钮?
- android - FragmentPagerAdapter - 我知道它已贬值,但我无法正确更改/更新
- alfresco - 使用 Alfresco API 连接 Alfresco
- python - python geopandas:抖动重叠点
- javascript - 为什么对齐项目不沿交叉轴居中?
- angular - 业力并行执行测试用例两次