ios - SQLite 和 Objective C - WHERE LIKE 语句错误

标签 ios sql objective-c sqlite

我正在尝试编写一个涉及 WHERE LIKE 语句的查询,但是我遇到了以下问题......

当我编写如下查询时:

"SELECT * FROM db WHERE name LIKE \"%%@%%\""

它被解释为:

SELECT * FROM db WHERE name LIKE "(null)"

当我查询以下内容时:

"SELECT * FROM db WHERE name LIKE \"%%%@%%\""

它被解释为:

SELECT * FROM db WHERE name LIKE "0x0p+0pple"

这个:

[@"SELECT * FROM db WHERE name LIKE \"%" stringByAppendingString:name] stringByAppendingString:@"%\""]

解释为:

SELECT * FROM db WHERE name LIKE "0x0p+0pple"

有办法纠正或解决这个问题吗?

最佳答案

如果要使用字符串格式,则需要:

NSString *query = [NSString stringWithFormat:@"SELECT * FROM db WHERE name LIKE '%%%@%%'", someValue];

前两个 %% 变成一个 %%@ 被替换为 someValue 中的任何字符串。最后两个 %% 变成一个 %

query 最终是:

SELECT * FROM db WHERE db LIKE '%apple%'

假设 someValue 是字符串 @"apple"

附带说明一下,如果您正在使用各种 sqlite3_column_xxx 函数和特定索引号,最好避免使用 SELECT * FROM,因为您无法确定返回列的顺序与您的代码匹配。明确列出您希望从查询中获取的列会更安全、更清晰。

关于ios - SQLite 和 Objective C - WHERE LIKE 语句错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51041530/

相关文章:

sql - 如何通过注册表查找sql​​ server实例的版本和版本

ios - Objective C 委托(delegate)或 C 风格的 block 回调?

iphone - UIScrollView 触摸似乎不起作用

ios - 快速关闭弹出窗口后刷新 View

ios - UIButton子类更改标题颜色,而无需使用setTitleColor(_,用于状态:) [Swift]

jquery - 禁用 native iOS 智能横幅

sql - MDX YTD 计算度量

mysql - 一次填充MySQL记录一对多关联表

ios - Branch.io 统计数据

objective-c - 如何加快 UITextView 的更新速度?