Kri*_*one 3 excel ms-access datasource sql-like
我创建了一个 MS Access 2013 查询,在查询中我有一个使用 LIKE 运算符的表达式。然后我创建一个 Excel 2013 工作簿并选择此 Access 数据库作为数据源并选择包含 LIKE 表达式的查询。问题是它在将数据返回到excel时似乎不喜欢LIKE表达式。从 Access 内部运行查询时,它会显示正确的结果。
所以如果我有一个看起来像这样的表情
iif([CAR] like "*A*", True,False)
Run Code Online (Sandbox Code Playgroud)
在 Access 中运行查询时,它将返回表中的所有 CAR,并根据 CAR 字段中的字符串显示 true 或 false。但是当将此查询设置为 Excel 数据源时,它仅返回导致 false 的结果(CAR 字段字符串中没有 A)
我知道 Excel 不使用 LIKE 运算符,但我认为 Access 中的查询会产生结果,而 Excel 只是使用结果。
如果您需要对问题进行澄清,请在评论中提问。
在 Access SQL-89 模式下,*
用作通配符以匹配零个或多个字符的任何序列。SQL-89 模式是查询设计器和从 DAO 运行的查询的 Access 默认模式。
但是 Access 也支持 SQL-92 模式,它使用%
而不是*
作为通配符。如果您使用 ADO 从 Excel 运行查询,则它使用的是 SQL-92 模式。
要在 Excel 中获得预期的结果,您至少可以做 3 件事:
IIf([CAR] Like "%A%", True,False)
- 在查询中使用此表达式可在 Excel 中获得预期结果。缺点是在 Access 会话中运行查询时,您可能看不到相同的结果。
IIf([CAR] ALike "%A%", True,False)
- Alike
(而不是Like
) 向数据库引擎发出信号以期望%
而不是*
作为通配符,无论查询是从 SQL-89 还是 92 模式运行。所以这个表达式在 Access 和 Excel 中应该给你相同的结果。
IIf(InStr(1, [CAR], "A", 1) > 0, True, False)
-InStr
不依赖通配符,因此应该在 Access 和 Excel 中为您提供相同的结果。
归档时间: |
|
查看次数: |
4208 次 |
最近记录: |