就像在javascript中查询excel数据库一样

时间:2013-12-19 22:34:35

标签: javascript sql ms-access

我编写了一些Javascript代码,并尝试从MS Access数据库中获取数据。

我可以使用select *语句从表中获取但无法执行类似查询。 我使用以下查询:

 strQuery = "SELECT * FROM Sheet1 WHERE (((Sheet1.Name) Like '*i*'))";

结果显示未找到记录,如果我将其替换为以下内容:

 strQuery = "SELECT * FROM Sheet1 WHERE (((Sheet1.Name) = 'i'))";

这很有效。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

与许多模式匹配函数不同,SQL LIKE运算符中“零个或多个任何字符”的标准通配符为%,而不是*

因此,如果其他函数使用模式*i*,则标准SQL WHERE子句将

WHERE (((Sheet1.Name) Like '%i%'))

根据this documentation page,Access实际上在不同的情况下使用两组不同的通配符,它​​们称为“ANSI-89”和“ANSI-92”(可能是指不同的SQL标准,尽管这似乎一件奇怪的事情已经改变了):

  

Access支持两组通配符,因为它支持两种结构化查询语言标准 - ANSI-89和ANSI-92。通常,在对Access数据库运行查找或查找和替换操作时,请使用ANSI-89通配符。在对Access项目运行查询时,使用ANSI-92通配符 - 访问连接到Microsoft SQL Server数据库的文件。由于SQL Server使用ANSI-92标准,因此Access项目也使用ANSI-92标准。但是,Access也提供该规则的例外。

不知道Access,这对我来说真的不清楚,但似乎在ANSI-89语法中,通配符确实是*,所以在某些情况下您的查询是正确的,但您所使用的特定设置是使用“ANSI-92”模式,因此它需要是%的版本。

关于这个问题还有进一步的讨论:Microsoft Jet wildcards: asterisk or percentage sign?不同之处似乎在于你是否正在与DAO或ADO联系,这对我来说都是希腊人并让我头疼。