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有三件事可以获得您期望的结果:
-
IIf([CAR] Like "%A%", True,False)
– 在查询中使用此expression式以在Excel中获得预期的结果。 缺点是在查询在Access会话中运行时,可能看不到相同的结果。 -
IIf([CAR] ALike "%A%", True,False)
– 不pipe是从SQL-89运行查询还是从SQL-89运行,Alike
(而不是Like
) 92模式。 所以这个expression式应该在Access和Excel中给你相同的结果。 -
IIf(InStr(1, [CAR], "A", 1) > 0, True, False)
–InStr
不依赖通配符,所以在Access和Excel中都应该给出相同的结果。