在android中使用ormlite和sqlite进行不区分大小写的顺序

时间:2012-04-23 13:03:04

标签: android ormlite

我想从ORMLite DAO中对数据对象进行不敏感的排序。

目前我正在使用以下sqlite代码来区分我的所有者项目:

ownerDao.queryBuilder().orderBy("Name", true).query();

我看到here sqlite使用以下原始SQL支持不区分大小写的“order by”:

SELECT * FROM owner ORDER BY Name COLLATE NOCASE

添加所需后缀的任何简单方法(比调用queryRaw()更容易)?

替代解决方案是否可以将DatabaseField annotation上的columnDefinition属性设置为TEXT COLLATE NOCASE

1 个答案:

答案 0 :(得分:17)

我认为你想要的是使用QueryBuilder.orderByRaw(String) method。它看起来像是:

ownerDao.queryBuilder().orderByRaw("Name COLLATE NOCASE").query();

请注意原始字符串包含字符串的ORDER BY部分。引用javadocs

  

将原始SQL“ORDER BY”子句添加到SQL查询语句中。这不应包括“ORDER BY”。

TEXT COLLATE NOCASE columnDefinition可能有效,但我根本没有任何使用过的经验。

此外,我使用orderBy("Name COLLATE NOCASE", true)答案,因为通常ORMLite会尝试转义列名,引号会出错。