为什么我的LIKE查询只返回Microsoft Access 2013中的任何记录?

时间:2013-09-27 12:41:05

标签: sql ms-access jet sql-like ms-access-2013

我的SQL查询如下:

SELECT * FROM Suppliers WHERE SupplierName LIKE 's%';

当我在W3 School的TryIt编辑器(v1.2)(http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_like)上提交此查询时,它会返回一些记录,其中SupplierName以字母“S”开头,如预期的那样。

但是,当我在Access 2013中在我自己的数据库上运行此查询时,它不会返回任何记录,即使我的表名和字段名与W3的样本相同。

查询不使用'LIKE'似乎工作正常,例如:

SELECT * FROM Suppliers WHERE SupplierName="Part Supplier, Inc.";

返回适当的记录。只有在使用“LIKE”时,Access才会返回任何记录。

我的问题是,为什么LIKE查询不返回任何记录?后端数据源是一个Microsoft JET数据库(这是一个相对较小的数据库 - 不需要完整的SQL Server),但我认为这不应该有所作为。 Access执行查询时不会抱怨语法或抛出错误。

1 个答案:

答案 0 :(得分:4)

来自http://technet.microsoft.com/en-us/library/cc966377.aspx

  

Microsoft Jet使用Like运算符的部分匹配(或“通配符”)字符与大多数SQL方言中使用的字符不同。星号(*)字符与零个或多个字符匹配,相当于ANSI SQL中的百分比(%)字符。其他Microsoft Jet部分匹配字符是问号(?),它匹配单个字段中的任何字符,数字符号(#)匹配单个字段中的任何数字。

应该像这样修改查询:

SELECT * FROM Suppliers WHERE SupplierName LIKE 's*';