2013-06-19 143 views
0

我正在开发一个使用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

你的谓词是因为BEGINSWITH后'[C]'选项不区分大小写。如果你忽略它,那么它搜索区分大小写。 –

回答

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