1

我的 SQL 查询如下:

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

当我在 W3 School 的 TryIt 编辑器 (v1.2) ( http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_like )上提交此查询时,它会返回许多供应商名称以字母开头的记录'S',正如预期的那样。

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

不使用“LIKE”的查询似乎可以正常工作,例如:

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

返回相应的记录。只有在使用“LIKE”时,Access 才根本不返回任何记录。

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

4

1 回答 1

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*';

于 2013-09-27T12:47:58.650 回答