我正在开发一个使用Sqlite作为后端的iphone应用程序。我想在我的应用程序中实现搜索功能,我使用sql查询。我想以区分大小写的方式实现搜索。我使用了以下查询或获取数据。
SELECT data FROM table where data LIKE 'A%' ORDER BY ID ASC
由于Sqlite不区分大小写,我得到的数据以'a'和'A'开头。满足我的要求的备用选项是在显示之前过滤我的代码中的获取内容。我尝试了NSPredicate,但这也是以不区分大小写的方式工作的。 这是我的代码..
NSPredicate *pred = [NSPredicate predicateWithFormat:@"self BEGINSWITH[c] %@",[NSString stringWithFormat:@"%c",[filter characterAtIndex:i]]];
NSArray *arr = [arrayComponent filteredArrayUsingPredicate:pred];
有没有解决方案?
答案 0 :(得分:6)
答案 1 :(得分:1)
我不确定您是否可以在您的环境中使用PRAGMA
语句,但有以下选项:
PRAGMA case_sensitive_like = true;
PRAGMA语句是SQLite特有的SQL扩展并使用 修改SQLite库的操作。什么时候 case_sensitive_like已启用,大小写变得很重要。因此对于 例如,'a'LIKE'A'是假的,但是'a'LIKE'a'仍然是真的。
该文件在这里: http://www.sqlite.org/pragma.html#pragma_case_sensitive_like
答案 2 :(得分:-1)
找到另一个可能对您有帮助的答案:
SQLite case sensitive search with collate nocase field
简而言之,您需要使用COLLATE
命令更改排序规则:
http://www.sqlite.org/lang_expr.html#collateop
编辑试试这个(来自上面的其他帖子):
SELECT data FROM table where data LIKE 'A%' ORDER BY ID ASC COLLATE BINARY