用于LIKE语句的Sqlite3_bind(Objective-C)

时间:2010-02-22 03:53:19

标签: iphone objective-c sqlite

我尝试将NSString值绑定到我的SQL查询中,但它不起作用,我不知道我做错了什么。 这是我的疑问:


Select * from fiche where fichetype = 'EVENT' and sdate like '?%' ORDER BY cdate DESC

我正在使用这部分代码绑定值:


sqlite3_bind_text(getEventStatement, 1, [value UTF8String], -1, SQLITE_TRANSIENT);

此查询在我的数据库中正常工作,但在Xcode中没有。我也尝试过类似的东西:


Select * from fiche where fichetype = 'EVENT' and sdate GLOB '?*' ORDER BY cdate DESC

这个在Xcode中工作,但显示所有值,?*不起作用。

任何?谢谢,

1 个答案:

答案 0 :(得分:0)

对于那些与LIKE语句有同样问题的人,这里有适合我的解决方案。 首先,我改变了我的查询:


Select * from fiche where fichetype = 'EVENT' and sdate like ?001 ORDER BY cdate DESC

不要在参数标记中添加引号?001,然后创建一个新的字符串,将%放入您要查找的内容中:


NSString *theString = [NSString stringWithFormat:@"%@%%", myValue];

最后,只需将字符串绑定到预准备语句,如下所示:


sqlite3_bind_text(getEventStatement, 1, [theString UTF8String], -1, SQLITE_STATIC);

玩得开心,