FMDB和LIKE子句

时间:2012-01-26 21:20:49

标签: objective-c ios sqlite parameters fmdb

我无法让iOS的FMDB包装器使用参数和LIKE子句。实际上我在使用FMDB的SQLite上完全无法使用LIKE子句。

我尝试过使用`Name LIKE'%dam%'来匹配“Adam”,我尝试将其指定为如下参数,但都没有效果。

    [buffer appendString:@" Name LIKE '%dam%' "]; // no results

    [buffer appendString:@" Name LIKE ? "];
    [params addObject:[NSString stringWithFormat:@"%%%@%%", args.name]]; // no results

    [buffer appendString:@" Name LIKE '%' ? '%' "];
    [params addObject:[NSString stringWithFormat:@"%%%@%%", args.name]]; // no results

表中肯定有符合条件的项目,我只是看不出为什么FMDB没有返回它们。

2 个答案:

答案 0 :(得分:1)

您还可以尝试使用常规SQL查询将数据提取到FMResultset。这对我来说很好。

如果您需要稍后过滤数据,请使用效果很好的NSPredicate。

NSPredicate docs

predicate =
[NSPredicate predicateWithFormat:@"authors.lastName CONTAINS %@", @"Mark" ];
filtered  = [bookshelf filteredArrayUsingPredicate:predicate];

答案 1 :(得分:0)

有一天这头疼得厉害。试试这个

[buffer appendString:[NSString stringWithFormat:@" Name LIKE '%@dam%@' ",@"%",@"%"];