在iPhone iOS中如何使用参数形成一个带有LIKE语句的SQLITE查询?

4

假设我有一个名为name的搜索框。如果用户在搜索框中输入了“John”,那么我应该检查“Name”字段是否包含值“John”,并选择所有相应的字段值。“John”是NSString类型,可以从searchBar.text获取,并将其作为参数添加到查询中。我尝试过以下结构化的SQL语句,但它从未起作用。

NSString *query = [NSString stringWithFormat:@"select * from Employee where EmployeeName LIKE '%%@%'", searchText.text];
const char *sqlStatement = [query UTF8String];

我也尝试过这个

NSString *query = [NSString stringWithFormat:@"select * from Employee where EmployeeName LIKE %'%@'%", searchText.text];
const char *sqlStatement = [query UTF8String];

什么都没用。

2个回答

28

关键是要将百分数放进去。虽然有些繁琐,但可以像这样做:

@"select * from Employee where EmployeeName LIKE '%%%@%%'"

%% 是百分号,%@ 是替换字符串。


您不需要转义撇号。 - StilesCrisis
\%%%不是一样的吗?用\%不会显得更少...百分号吗? - Mike Lentini
% 是无意义的。它可能会产生未识别转义字符的警告。 - StilesCrisis

1

我尝试了所有可能的方法,但是无法形成精确的查询,最后用这种方式解决了。虽然是迂回的方法,但效果很好。

NSString *query = [NSString stringWithFormat:@"select * from Employee where EmployeeName LIKE"];
query = [query stringByAppendingString:@" '%"];
NSString  *addParameter = [NSString stringWithFormat:@"%@",searchText];
query = [query stringByAppendingString:addParameter];
query = [query stringByAppendingString:@"%'"];

这段代码看起来有点冗长,但是运行良好。

感谢@danh提供的精彩答案。现在,我可以将我的四行代码替换为一行代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接