我正在尝试编写一个涉及 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/