Android排序sqlite查询结果忽略大小写

Posted

技术标签:

【中文标题】Android排序sqlite查询结果忽略大小写【英文标题】:Android sort sqlite query results ignoring case 【发布时间】:2011-06-22 11:58:07 【问题描述】:

只是想知道是否有一种方法可以对忽略大小写的查询结果进行排序。因为此时以大写字母开头的字段被排序并放在列表顶部,以小写字母开头的字段也被排序但放在大写字段之后。

谢谢—— 迈克

【问题讨论】:

【参考方案1】:

ORDER BY column COLLATE NOCASE;

见http://www.sqlite.org/datatype3.html#collation

【讨论】:

我尝试这样做并收到错误SQLiteException: near "COLLATE": syntax error: , while compiling: SELECT * FROM table ORDER BY column ASC COLLATE NOCASE。解决方法是去掉ASC,只有在DESC时才指定方向。 @unchek — 也可以试试COLLATE NOCASE ASC @plowman 就像 aaz 说的,ASC 或 DESC 应该在 NOCASE 之后。【参考方案2】:

android 上,您会得到一个名为 LOCALIZED 的排序函数。

指定列时,请执行以下操作:

CREATE TABLE song(..., title TEXT COLLATE LOCALIZED ASC, ...)

效果很好。如果您有 Android 源代码,只需搜索“COLLATE”即可查看各种示例。

【讨论】:

【参考方案3】:

将所有条目转换为小写例如:select name from table order by LCASE(name)

LCASE 或 LOWER(检查文档)

【讨论】:

为回复伙伴干杯...不过,另一种方法更容易:)

以上是关于Android排序sqlite查询结果忽略大小写的主要内容,如果未能解决你的问题,请参考以下文章

SQLite,根据联合子查询的结果插入或忽略

SQLite Random() 在 ORDER BY 中没有正确排序

Java Spring Data Mongodb 1.10 排序忽略案例

QSqlQuery 忽略 SQLite DB 的排序顺序

Sqlite:在子查询“消除”结果中排序

按日期排序 - 领域(Android)