我的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执行查询时不会抱怨语法或抛出错误。
答案 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*';