使用 OLEDBREADER 和 MS Access 的 LIKE 命令问题

Posted

技术标签:

【中文标题】使用 OLEDBREADER 和 MS Access 的 LIKE 命令问题【英文标题】:LIKE Command Problem using OLEDBREADER and MS Access 【发布时间】:2010-07-07 09:09:08 【问题描述】:

这有点奇怪……

以下命令返回我在 Access 2003 的查询窗口中运行时所期望的结果:

SELECT * FROM Train WHERE [Days] LIKE '*3*'

但是,当我将它传递给我的 C# 代码以运行(返回 OleDbDataReader)时,我什么也得不到。我怀疑这与 LIKE 命令有关(当我删除它时,我得到行)。

有什么想法吗?

【问题讨论】:

【参考方案1】:

只是一个猜测,但试试这个:

SELECT * FROM Train WHERE [Days] LIKE '%3%'

【讨论】:

这是正确的:通过 Access 的查询生成器使用的 sql 方言和 oledb 连接使用的 sql 方言不一样。最大的区别在于使用的通配符,但如果您正在构建复杂的查询,您有时也会发现一些其他问题。 我预计它会像 mavnn 所说的那样,但我无法像他那样支持它;) 在 Access 中,使用旧的“SQL 89”模式,带有 * 和 ?通配符,如果通过 DAO 访问数据也是如此。如果你在Access中开启“SQL 92”模式,它会使用%和_,这也是你使用ADO/OLEDB时应该使用的。

以上是关于使用 OLEDBREADER 和 MS Access 的 LIKE 命令问题的主要内容,如果未能解决你的问题,请参考以下文章

我可以在后端使用 MS-Access 而不是 MYSQL

在 MS Access 中创建存储过程?

MS ACCESS 过滤器组合框所有选项

如何将 Timestamp(date.getTime()) 转换为 ms 访问日期? [复制]

用于Azure B2C acces令牌的Exchange Facebook SDK acces令牌

Acces数据库注入|偏移注入