【问题标题】:Case insensitive order by with ormlite and sqlite in android在android中使用ormlite和sqlite进行不区分大小写的顺序
【发布时间】:2012-05-04 02:19:12
【问题描述】:

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

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

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

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

SELECT * FROM owner ORDER BY Name COLLATE NOCASE

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

是否可以将DatabaseField annotation 上的columnDefinition 属性设置为TEXT COLLATE NOCASE

【问题讨论】:

  • 你试过orderBy("Name COLLATE NOCASE", true) 可能是这样的。
  • 我想过这个问题,但即使这样可行,它也可能会与 ORMLite 的某些未来版本中断。

标签: android ormlite


【解决方案1】:

我想你想要的是使用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 会尝试转义列名并且引号会出现在错误的位置。

【讨论】:

  • orderByRaw("Name COLLATE NOCASE") 按预期工作。谢谢格雷
猜你喜欢
  • 2010-10-29
  • 2013-03-06
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 2017-03-17
  • 2013-04-17
相关资源
最近更新 更多