MS Access LIKEexpression式在用作MS Excel数据源时有问题

我创build了一个MS Access 2013查询,在查询中我有一个使用LIKE运算符的expression式。 然后,我创buildExcel 2013工作簿并select此Access数据库作为数据源并select包含LIKEexpression式的查询。 问题是,当将数据返回给excel时,它似乎不喜欢LIKEexpression式。 它从Access中运行查询时显示正确的结果。

所以如果我有一个这样的expression式

iif([CAR] like "*A*", True,False) 

它将返回表中的所有CAR,并在Access中运行查询时,根据CAR字段中的string显示true或false。 但是,如果将此查询设置为Excel数据源,则只会返回结果为false的结果(CAR字段string中不包含A)

我知道Excel不使用LIKE运算符,但我认为在Access中的查询产生的结果和Excel只是使用结果。

如果您需要澄清问题,请在评论中提问。

在Access SQL-89模式下, *被用作通配符来匹配零个或多个字符的任何序列。 SQL-89模式是查询devise器和从DAO运行查询的Access默认模式。

但是Access也支持使用%而不是*作为通配符的SQL-92模式。 如果您使用ADO从Excel运行查询,则使用SQL-92模式。

在Excel中至less有三件事可以获得您期望的结果:

  1. IIf([CAR] Like "%A%", True,False) – 在查询中使用此expression式以在Excel中获得预期的结果。 缺点是在查询在Access会话中运行时,可能看不到相同的结果。

  2. IIf([CAR] ALike "%A%", True,False) – 不pipe是从SQL-89运行查询还是从SQL-89运行, Alike (而不是Like ) 92模式。 所以这个expression式应该在Access和Excel中给你相同的结果。

  3. IIf(InStr(1, [CAR], "A", 1) > 0, True, False)InStr不依赖通配符,所以在Access和Excel中都应该给出相同的结果。