[英]Query Access with wildcard
我试图从Winforms中的Access 2010数据库中进行子字符串搜索。
command.Parameters.AddWithValue("@searchTerm", searchTerm);
command.CommandText = "SELECT [OA_Name] FROM [Operating_Authority_Table] WHERE [OA_Name] = [@%searchTerm%]";
我试图进行完整的字符串搜索并且能够做到这一点,但是当我将术语更改为子字符串时,我无法获得任何成功的搜索。
我错误地实现了通配符吗?
尝试这样的事情:
command.Parameters.AddWithValue("@searchTerm", searchTerm);
command.CommandText = "SELECT [OA_Name] FROM [Operating_Authority_Table] WHERE [OA_Name] = '%' + @searchTerm + '%'";
接受的答案:
"...WHERE [OA_Name] = '%' + @searchTerm + '%'";
这会将%
字符视为文本文字。
我有些惊讶,因为问题标题中的“通配符”一词表明该意图是用于模式匹配的。 如果确实如此,我建议用ALIKE
运算符替换=
ALIKE
运算符,例如
"...WHERE [OA_Name] ALIKE '%' + @searchTerm + '%'";
LIKE
运算符的问题在于,Access数据库引擎(ACE,Jet等)使用的通配符取决于所谓的ANSI查询模式 。 大概是通过暗示使用SqlOleDb来使用ANSI-92查询模式(但是您确定吗?)
ALIKE
的优势在于,无论ANSI查询模式如何,都使用相同的“标准”通配符, %
表示多个字符, _
表示单个字符。
尝试使用SQL LIKE运算符
command.CommandText = "SELECT [OA_Name] FROM [Operating_Authority_Table] WHERE [OA_Name] LIKE '%"+ searchTerm +"%'";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.