繁体   English   中英

使用通配符查询访问

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM