FMDB查询与LIKE无法正常工作

The*_*eTC 11 sqlite iphone fmdb ios

我正在使用FMDB,它是SQLite的包装器.http://github.com/ccgus/fmdb

这是我的查询行:

FMResultSet *athlete = [db executeQuery:@"SELECT * FROM athletes WHERE athlete_name LIKE ?", search_text];
Run Code Online (Sandbox Code Playgroud)

如果我输入运动员的确切名字,我可以用这个来得到结果.但是,我正在尝试使用LIKE,所以我可以搜索名称.但是,当我添加%?%而不是仅仅?......没有回报.而且没有错误.

有没有人遇到过这个,知道我做错了什么?

感谢大家!

omz*_*omz 32

通配符(%)必须是替换变量的一部分,而不是查询字符串:

FMResultSet *rs = [db executeQuery:@"SELECT * FROM athletes WHERE athlete_name LIKE ?",
                  [NSString stringWithFormat:@"%%%@%%", search_text]];
Run Code Online (Sandbox Code Playgroud)

  • `%`是SQL`LIKE`运算符的"通配符".可以将其视为占位符,允许您匹配字符串的各个部分.因为`%`在格式字符串中有特殊含义,所以每个都加倍表示"我想要一个实际的百分比字符,而不是像'%@`那样的格式字符串占位符".这只是必要的,因为我在这里使用`stringWithFormat:`.你是对的`?`基本上是`%@`的SQL等价物. (2认同)