【问题标题】:FMDB query isn't acting right with LIKEFMDB 查询不适用于 LIKE
【发布时间】:2012-02-18 23:44:46
【问题描述】:

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

这是我的查询行:

FMResultSet *athlete = [db executeQuery:@"SELECT * FROM athletes WHERE athlete_name LIKE ?", search_text];

如果我输入运动员的确切姓名,我可以使用它返回结果。但是,我正在尝试使用 LIKE 来搜索名称。但是,当我添加 %?% 而不是 ? ...没有任何回报。而且没有错误。

以前有没有人遇到过这种情况并知道我做错了什么?

谢谢大家!

【问题讨论】:

  • 我建议为不熟悉 FMDB 的人提供一个链接

标签: iphone ios sqlite fmdb


【解决方案1】:

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

FMResultSet *rs = [db executeQuery:@"SELECT * FROM athletes WHERE athlete_name LIKE ?",
                  [NSString stringWithFormat:@"%%%@%%", search_text]];

【讨论】:

  • 啊好的...非常感谢。我今天睡了 1/2,所以我以为我错过了一些简单的东西。 =)
  • 我很难让它工作。有替代语法吗?我的想法不多了。
  • 啊太好了!!谢谢@omz。我对 mysql 非常陌生,所以你介意解释一下 %%%@%% 是什么意思吗?我得到了 %@... 但是其他 % 的意义是什么?和?。我假设 ?是相当于 %@ 的 sql,但我仍然收到此警告:Data argument not used by format string
  • % 是 SQL LIKE 运算符的“通配符”。将其视为一个占位符,可让您匹配字符串的各个部分。因为% 在格式字符串中具有特殊含义,所以每个都加倍表示“我想要一个实际的百分比字符,而不是像%@ 这样的格式字符串占位符”。这只是必要的,因为我在这里使用stringWithFormat:。你说得对,? 基本上是%@ 的 SQL 等价物。
猜你喜欢
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多