目标C中的Sqlite Like Function

时间:2013-05-02 08:17:10

标签: ios objective-c xcode sqlite

SELECT count(*) from BOOKS where BOOKS.TAG_ID like '%,1,%'

我想在Objective-C中执行此查询。

 const char *sql = "Select count(*) from Documents WHERE DocumentTag LIKE '%i,?,%i'";
 sqlite3_stmt *sqlStatement;
 NSString *bindParam = [NSString stringWithFormat:@"%d", tagId];
if(sqlite3_bind_int(sqlStatement, 1, tagId)!= SQLITE_OK){
    NSLog(@"Problem binding search text param.");
}
else if(sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL)==SQLITE_OK)
{
    sqlite3_bind_int(sqlStatement, 1, sqlite3_column_int(sqlStatement, 0));
    if(sqlite3_step(sqlStatement)==SQLITE_ROW)
    taskCount=sqlite3_column_int(sqlStatement,0);
    sqlite3_reset(sqlStatement);
    sqlite3_finalize(sqlStatement);

}

1 个答案:

答案 0 :(得分:1)

在字符串文字中无法识别参数标记(否则,在字符串中不可能使用?个字符。)

您必须从三个字符串构建LIKE模式,您的参数以及前缀和后缀:

const char *sql = "Select count(*) from Documents"
                  " WHERE DocumentTag LIKE '%i,' || ? || ',%i'";