6

我想以不区分大小写的方式从 ORMLite DAO 中订购我的数据对象。

目前,我正在使用以下 sqlite 代码区分大小写来订购我的所有者物品:

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

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

SELECT * FROM owner ORDER BY Name COLLATE NOCASE

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

另一种解决方案是将DatabaseField 注释columnDefinition上的属性设置为?TEXT COLLATE NOCASE

4

1 回答 1

17

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

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 会尝试转义列名并且引号会在错误的位置。

于 2012-04-23T17:45:48.833 回答